【问题标题】:'custom_filters' is not a valid tag library“custom_filters”不是有效的标签库
【发布时间】:2017-06-30 04:06:24
【问题描述】:

我正在尝试创建自定义过滤器,并且我已按照 Django 文档中的步骤进行操作。 但是,当我加载加载过滤器的模板时,会引发以下错误:

'custom_filters' is not a valid tag library

...它指的是模板中的以下行:

1   {% extends 'shared/base.html' %}
2   {% load custom_filters %} <--- the error
3   
4   {% block title %}
5       Showing project {{project}}
6   {% endblock %}

文件结构:

project/
    ...
    ...
    models.py
    views.py
    templates/
    templatetags/
        __init__.py
        custom_filters.py

custom_filters.py:

from django import template
register = template.Library()

@register.filter(name='ownership')
def ownership(project, user):
    return project.added_by_user == user

所以,由于某种原因,Django 无法找到看起来的 custom_filters 文件,尽管我已经按照自己的方式完成了所有工作(据我所知)。

我做错了什么?

注意:我当然尝试过重启服务器。

【问题讨论】:

  • 这是在应用程序中吗?包含自定义标签的应用必须在 INSTALLED_APPS 中。

标签: django filter django-templates


【解决方案1】:

模板标签文件夹必须在模板文件夹、views.py、models.py、...的旁边

 //Don't forget also to put __init__.py outside the templatetags,

 @register.simple_tag
 def ownership(project, user):
     return project.added_by_user == user

【讨论】:

    【解决方案2】:

    如果您的应用名称是 MyApp 并且您的标签文件夹名称是 templatetags 那么在 settings.py 您应该有:

    INSTALLED_APPS = [
    'MyApp',
    'MyApp.templatetags'
    

    ]

    您的app 和您的应用程序包下的tag folder 那里需要 Django 项目。

    -> MyApp
        ---> models.py
        ---> views.py
        ---> templatetags
          -----> __init__.py
          -----> app_filters.py
    

    【讨论】:

      猜你喜欢
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 2011-05-31
      • 1970-01-01
      • 2012-08-22
      • 2012-04-02
      相关资源
      最近更新 更多