django:无效筛选器

django:无效筛选器,django,django-template-filters,Django,Django Template Filters,我得到了一个文章应用程序,并试图制作一个自定义过滤器,我在文章应用程序中有一个名为templatetags的目录,该目录中有一个tags.py,下面是目录结构 -manage.py(f) -settings.py(f) -articles(d) - templatetags(d) - tags.py(f) -base.html(f) -articles(d) -index.html(f) 在模板上,文章有自己的目录,所有文章模板都是从base.html模板扩展而来的,下面是模板结构

我得到了一个文章应用程序,并试图制作一个自定义过滤器,我在文章应用程序中有一个名为templatetags的目录,该目录中有一个tags.py,下面是目录结构

-manage.py(f)
-settings.py(f)
-articles(d)
 - templatetags(d)
  - tags.py(f)
-base.html(f)
-articles(d)
 -index.html(f)
在模板上,文章有自己的目录,所有文章模板都是从base.html模板扩展而来的,下面是模板结构

-manage.py(f)
-settings.py(f)
-articles(d)
 - templatetags(d)
  - tags.py(f)
-base.html(f)
-articles(d)
 -index.html(f)
我在base.html{%load tags%}中加载了标记,并在index.html中使用了自定义过滤器,得到了无效的过滤器错误

标记.py

我只是不知道我做错了什么

编辑: 我将过滤器名称更改为
abcfilter.py
,并将文章应用程序加载到我的
settings.py

articles/index.html

 {% load abcfilter %}
 {{ "foo bar"|space2dash }}
错误:

Request Method: GET
Request URL:    http://localhost:8080/articles/
Django Version: 1.2.5
Exception Type: TemplateSyntaxError
Exception Value:    
Invalid filter: 'space2dash'
Exception Location: ***/lib/python2.7/django/template/__init__.py in find_filter, line 363
Python Executable:  /usr/local/bin/python
Python Version: 2.7.1
Server time:    Sun, 10 Apr 2011 07:55:54 -0500

首先,在替换后删除分号

templatetags目录下是否有一个名为
\uuuu init\uuuu.py
(假设在init前后有2个下划线,在编辑器中很难格式化)的文件

如果你还没看过,这里有一个很好的页面,里面有很多信息


这个问题几乎让我发疯,上面的答案都没有帮助


如果您有多个应用程序,请确保包含自定义标记/过滤器的文件名是唯一的,最好是
app\u name\u filters.py
。否则Django将只从它首先找到匹配的应用加载自定义过滤器

仅供参考,我通过移动解决了这个问题

{% load ... %}
从基础模板到混凝土模板。
另请参见本帖

为了避免使用
{%load module\u NAME%}
在每个模板中加载模块,您可以在
设置.py中将其添加为
'builtin'

TEMPLATES = [
    {
        'OPTIONS': {
            ...
            ,
            'builtins': [
                ...
                'APP_NAME.templatetags.MODULE_NAME',
                ]
        },
    },
]

感谢您的回答,在删除smeicolon之后,错误仍然存在。(仅供参考,我在templatetags目录中有一个空的init.py,我已经阅读了几次文档页面,但我不知道我做错了什么)尝试将文件从标记重命名为其他内容。也许标签是一个保留字。您是否在设置文件中注册了文章应用程序?你能发布准确的错误和用于调用标记的HTML吗?我已经将tags.py更改为abcfilter.py,并在模板中检查上面的错误和HTML不确定在转换到SO时它是否是打字错误,但是{{“foo bar”| space2dash%}应该是{“foo bar”| space2dash}你的方法也叫space2Dash,但你引用的是space2Dash(全小写)。谢谢Ken,我想我要从亚马逊订购一顶帽子并吃掉它(问题是我得到了一顶space2Dash,大写D:)谢谢你!你触发了我检查它…我的部署例程不会删除服务器上的旧文件。所以它在本地工作,在测试中,但在服务器上不工作。我丢失了。你救了我!对我有用。将它放在基模板中似乎根本不起作用。我遇到了同样的问题。有人知道为什么会发生这种情况吗?