1

我正在尝试创建自定义过滤器,并且我已按照 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 文件,即使我已经完成了所有应该做的事情(据我所知)。

我究竟做错了什么?

注意:当然我已经尝试重新启动服务器。

4

2 回答 2

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
于 2013-03-01T13:18:40.870 回答
1

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

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

]

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

-> MyApp
    ---> models.py
    ---> views.py
    ---> templatetags
      -----> __init__.py
      -----> app_filters.py
于 2017-06-29T20:06:24.163 回答