Django 找不到我的自定义模板过滤器
Posted
技术标签:
【中文标题】Django 找不到我的自定义模板过滤器【英文标题】:Django can't find my custom template filter 【发布时间】:2013-03-26 05:38:23 【问题描述】:我正在尝试在我的 Django 应用程序中创建自定义模板过滤器。我在我的应用下创建了一个 templatetags 文件夹,添加了一个 __init__.py
文件和一个带有过滤器的 filters.py 文件,如下所示:
import os
from django import template
from django.template.defaultfilters import stringfilter
register = template.Library()
@register.filter
@stringfilter
def filename(pathname):
""" Returns the file's name, without folder """
return os.path.basename(pathname)
当我尝试从模板访问过滤器时,我收到错误“无效的过滤器'文件名'”
这个问题被问了很多,所以我已经检查了以下内容:
__init__.py
命名正确
使用manage.py shell
打开一个shell 后,我可以像这样导入我的过滤器:import app.templatetags
我也可以从 Django shell 中正确使用过滤器
我已经重启了 Django 开发服务器。
我已在对 template.library()
的调用上放置了一个断点 - 调试器不会停在那里。
这是模板(我已经删除了部分模板,但在这个小版本中仍然存在错误)
<form enctype="multipart/form-data" action="% url lab.views.new.artefact_drop_web tempfile_id=tempfile.id %" method="post">
% csrf_token %
<h3>File:</h3>
<p> tempfile.file.name|filename </p>
<input type="submit" value="Add" />
</form>
【问题讨论】:
您也可以发布您的模板吗? 已发布。这当然是模板的精简版。 我的问题是在创建模板标签文件后手动重新启动 django 服务器。要检查的事情的摘要! 【参考方案1】:您需要在模板中使用% load name_of_file_tags_are_in %
。
https://docs.djangoproject.com/en/1.5/howto/custom-template-tags/
【讨论】:
难以置信!出于某种原因,我的印象是我只需要使用自定义标签来执行此操作。谢谢! 19 秒。他们真的应该停止这样做,有些答案可能会因为人们厌倦而无法接受。 您也可以使用django.template.add_to_builtins()
使您的过滤器可用,而无需明确% load %
。
不知何故 % load %
对我不起作用,但 add_to_builtins
完全没问题。
加载对我也不起作用,为什么会这样?以上是关于Django 找不到我的自定义模板过滤器的主要内容,如果未能解决你的问题,请参考以下文章
Django - 如何在任何包含的模板中使用我的自定义过滤器?