繁体   English   中英

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

[英]How to create a custom django filter tag

我无法让我的网站识别自定义模板标签。 我有以下目录结构:

  • 项目名
    • 项目名
      • templatetags
        • _ __init __ _.py
        • getattribute.py
      • 意见
        • _ __init __ _.py
        • 的index.html
      • 意见
      • settings.py
      • main.py
      • manage.py
      • urls.py
    • nbproject文件

然后我将其添加到INSTALLED_APPS:

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

然后我在模板中引用它,如下所示:

{% load getattribute %}
{%  for header in headers %}
    <td>{{ obj|getattribute:header }}</td>
{% endfor %}

我得到的错误如下:

无法导入controllers.EventController。 错误是:没有名为project_name的模块

任何帮助将不胜感激:

TIA

安德鲁

更新:

该网站有效,但我无法使用模板标签。 如果我从installed_apps中删除project_name,我会收到以下错误:

异常值:'getattribute'不是有效的标记库:无法从django.templatetags.getattribute加载模板库,没有名为getattribute的模块

错误是因为您的文件夹结构错误,我认为您必须阅读文档,本教程(第1部分)解释了正确的结构:

你有一个与app不同的项目:

  • 项目名
    • APP_NAME
      • templatetags
        • getattribute.py
      • models.py
      • views.py
  • settings.py
  • manage.py

在你的INSTALLED_APPS

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

就这些

您确定这与模板标签有关吗?

听起来像project_name目录不在你的python路径上。 错误页面上的输出应显示当前的python路径,因此您可以检查它是否符合预期。

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

你的项目结构,不是太精细,一团糟。 您需要做的许多事情中的一些:

  • 不要对包含目录(项目)和内部目录(应该是应用程序名称)使用相同的名称。
  • manage.pysettings.py应该在外层,而不是在应用程序内。
  • 我不知道第二种views是什么 - 它实际上是views.py吗? 在这种情况下,它永远不会被使用。
  • templatetagsviews的空文件应为__init__.py ,即两侧的两个下划线。
  • 可能是问题的真正原因:你需要在应用程序中使用models.py,即使它是空的,Django也可以加载它 - 如果没有它,templatetags将无法工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM