'custom_filters'不是有效的标记库

时间:2013-03-01 13:14:06

标签: django filter django-templates

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

我做错了什么?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果您的应用名称为MyApp且您的代码文件夹名称为templatetags,那么您应该在settings.py中拥有:

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

您的应用包下的apptag folder 那里需要Django项目。

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