Python Django-Can';t在模板中加载自定义筛选器
我想将增量时间显示为“x天前”。我尝试了Django的timesince过滤器,但它返回“x天x分钟”。我只想展示几天。我尝试过人性化的自然时间,但我想它只适用于DateTimeField。我用的是DateField 我有一个这样的自定义过滤器(app_filters.py) 我在settings.py中将“app”添加到已安装的_APPS中 我试图在这样的模板中使用这个过滤器Python Django-Can';t在模板中加载自定义筛选器,python,django,django-templates,Python,Django,Django Templates,我想将增量时间显示为“x天前”。我尝试了Django的timesince过滤器,但它返回“x天x分钟”。我只想展示几天。我尝试过人性化的自然时间,但我想它只适用于DateTimeField。我用的是DateField 我有一个这样的自定义过滤器(app_filters.py) 我在settings.py中将“app”添加到已安装的_APPS中 我试图在这样的模板中使用这个过滤器 {% extends 'app/base.html' %} {% load app_filters %} {{ en
{% extends 'app/base.html' %}
{% load app_filters %}
{{ entry.date_updated | days_since }}
然后我得到错误:“app_filters”不是注册的标记库
我的错误在哪里?我意识到需要重新启动web服务器来加载自定义模板过滤器。这就是本例中的解决方案。我遇到了一个类似的问题:重新启动时,请确保您的filters.py类位于已安装的django应用程序中,否则它们将不会被拾取 包含自定义标记的应用程序必须安装在应用程序中,{%load%}标记才能工作。这是一个安全特性:它允许您在一台主机上托管多个模板库的Python代码,而无需为每个Django安装启用对所有模板库的访问
能否从shell加载筛选文件?在
python manage.py shell中
尝试类似于app.templatetags导入app_过滤器的。还有一种可能是app_filters.py中的某个地方出现了错误,Django没有将其传递给您。另外,请原谅这个明显的问题,但是您是否尝试重新启动服务器?app\u filters.py
中没有错误,我只是尝试了一下,效果很好。我确实遇到了与您相同的错误,但在我的情况下,这是因为我的templatetags
文件夹位于错误的位置,因此即使应用程序位于已安装的应用程序中,也没有被拾取。这可能也是您的情况吗?请尝试在项目目录中创建模板标记文件夹。它将按预期工作。
app/
models.py
views.py
...
templatetags/
__init__.py
app_filters.py
{% extends 'app/base.html' %}
{% load app_filters %}
{{ entry.date_updated | days_since }}