django:无效筛选器
我得到了一个文章应用程序,并试图制作一个自定义过滤器,我在文章应用程序中有一个名为templatetags的目录,该目录中有一个tags.py,下面是目录结构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模板扩展而来的,下面是模板结构
-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:)谢谢你!你触发了我检查它…我的部署例程不会删除服务器上的旧文件。所以它在本地工作,在测试中,但在服务器上不工作。我丢失了。你救了我!对我有用。将它放在基模板中似乎根本不起作用。我遇到了同样的问题。有人知道为什么会发生这种情况吗?