Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-Can';t在模板中加载自定义筛选器_Python_Django_Django Templates - Fatal编程技术网

Python Django-Can';t在模板中加载自定义筛选器

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

我想将增量时间显示为“x天前”。我尝试了Django的timesince过滤器,但它返回“x天x分钟”。我只想展示几天。我尝试过人性化的自然时间,但我想它只适用于DateTimeField。我用的是DateField

我有一个这样的自定义过滤器(app_filters.py)

我在settings.py中将“app”添加到已安装的_APPS中 我试图在这样的模板中使用这个过滤器

{% 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 }}