Django 自定义模板过滤器不起作用

Posted

技术标签:

【中文标题】Django 自定义模板过滤器不起作用【英文标题】:Django custom template filter can't work 【发布时间】:2011-03-29 07:59:11 【问题描述】:

我有一个错误: 'run_target' 不是有效的标签库:找不到模板库 run_target,尝试 django.templatetags.run_target

我不知道为什么它不能工作,即使我添加了'db.templatefilters'它也不能工作...... 谁能帮我?谢谢你:)

下面是我的文件结构:

db/
    models.py
    templatefilters/
        __init__.py
        run_target.py
templates/
    run.html

run_target.py

from django import template
register = template.Library()

@register.simple_tag
def dictKeyLookup(the_dict, key):
       return the_dict[key]

运行.html

% extends "index.html" %
**% load run_target %**
% block content %
<div style="margin-left:150px; margin-top:10px">
<a href="/home">Home</a> >> <b>run</b>
</div>
<form name="form" method="post">
<br>
<input type="submit" value="Delete" style="margin-left:149px; width:80px; height:30px">
<table border="1"; style="margin-left:150px; border-collapse:collapse;margin-top:10px"; cellpadding="4" borderColor=black>

% for run in run_list %
    <tr>
    <td>% dictKeyLookup target_dict run.id %</td>
    </tr>
% endfor %
</table>
</form>
% endblock %

【问题讨论】:

【参考方案1】:

第一件事:您在进行更改后是否重新启动您的服务器?这是微不足道的,但大多数人因此而陷入困境。


db 在您的INSTALLED_APPS 设置中吗?

如果是这样,那么您缺少的另外两件事是:

db 文件夹本身中有一个 __init__.py 文件(templatefilters 目录中有一个文件,但其父目录没有) templatefilters 文件夹应称为 templatetags(请参阅文档的 Code layout 部分)。

顺便说一句,db 不是一个很好的应用名称 - 将其命名为更接近 其功能的名称。

【讨论】:

感谢您的回答,我不知道文件夹名称'templatetags'不能更改,再次感谢:) 别忘了重启服务器...看起来很简单,但这是我的问题【参考方案2】:

如果一切都按照文档中的那样完成:

init.py 在 app 文件夹和 templatetags 文件夹内 settings.py 中 INSTALLED_APPS 部分中的应用名称

如果您在服务器运行期间使用新标签/过滤器对模块进行了编码,则可以通过重新启动服务器来解决问题。

【讨论】:

以上是关于Django 自定义模板过滤器不起作用的主要内容,如果未能解决你的问题,请参考以下文章

JQuery 在 Django 自定义模板标签的模板中不起作用

Django Allauth 自定义登录模板不起作用

Django 自定义过滤器错误。返回“无效过滤器”

测试自定义 Django 模板过滤器

DJANGO之自定义模板过滤器

django自定义模板标签和过滤器