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 自定义模板过滤器不起作用的主要内容,如果未能解决你的问题,请参考以下文章