如何创建自定义Django过滤器标记

2024-04-23 08:38:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有麻烦让我的网站识别自定义模板标记。我有以下dir结构:

  • 项目名称
    • 项目名称
      • 模板标签
        • _初始值
        • 在获取属性.py在
      • 观点
        • _初始值
        • 在索引.html在
      • 观点
      • 在设置.py在
      • 在主.py在
      • 在管理.py在
      • 在网址.py在
    • NB项目

然后我将此添加到已安装的应用程序中:

INSTALLED_APPS = (
#    'django.contrib.auth',
    'django.contrib.contenttypes',
#    'django.contrib.sessions',
    'django.contrib.sites',
    'project_name'
)

然后我在模板中引用如下:

^{pr2}$

我得到的误差如下:

Could not import controllers.EventController. Error was: No module named project_name

如有任何帮助,我们将不胜感激:

TIA公司

安德鲁

更新:

网站工作,但我不能让模板标签工作。如果从已安装的应用程序中删除项目名称,则会出现以下错误:

Exception Value: 'getattribute' is not a valid tag library: Could not load template library from django.templatetags.getattribute, No module named getattribute


Tags: djangononamepyproject模板应用程序网站
3条回答

你确定这是和模板标签有关的吗?在

听起来project_name目录不在python路径上。错误页面上的输出应该显示您当前的python路径,这样您就可以检查它是否如预期的那样。在

阅读以下内容了解如何修复: http://djangotricks.blogspot.com/2008/09/note-on-python-paths.html

错误是因为你的文件夹结构错误,我认为你必须阅读文档,这个tutorial (part1)解释了正确的结构:

你有一个与应用程序不同的项目:

  • 项目名称
    • 应用程序名称
      • 模板标签
        • 在获取属性.py在
      • 在模型.py在
      • 在视图.py在
  • 在设置.py在
  • 在管理.py在

在你的INSTALLED_APPS中:

INSTALLED_APPS = (
#    'django.contrib.auth',
     'django.contrib.contenttypes',
#    'django.contrib.sessions',
     'django.contrib.sites',
     'project_name.app_name',
)

仅此而已

你的项目结构是,不要说得太细,一团乱。你需要做的事情有:

  • 不要对包含目录(project)和内部目录(应该是应用程序名)使用相同的名称。在
  • manage.py和{}应该在外部级别,而不是应用程序内部。在
  • 我不知道第二个views是什么-它真的是{}?在这种情况下,它将永远不会被使用。在
  • templatetagsviews中的空文件应该是__init__.py,即两边都有下划线。在
  • 可能是你问题的真正原因:你需要一个模型.py在应用程序内部,即使它是空的,Django也要加载它—没有它templatetags就无法工作。在

相关问题 更多 >