【问题标题】:How to create a custom django filter tag如何创建自定义 django 过滤器标签
【发布时间】:2011-01-06 02:42:41
【问题描述】:

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

  • 项目名称
    • 项目名称
      • 模板标签
        • _ __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 %}

我得到的错误如下:

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

任何帮助将不胜感激:

TIA

安德鲁

更新:

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

异常值:'getattribute' 是 不是有效的标签库:不能 从加载模板库 django.templatetags.getattribute,否 名为 getattribute 的模块

【问题讨论】:

    标签: python django


    【解决方案1】:

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

    您的项目与应用不同:

    • 项目名称
      • app_name
        • 模板标签
          • 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',
    )
    

    就是这样

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        你确定这是专门与模板标签有关的吗?

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

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

        【讨论】:

          猜你喜欢
          • 2020-11-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多