我想将“delta time”显示为“x天前”。我尝试过Django的timesince过滤器,但它返回'x天,x分钟'。我只想显示几天。我尝试了人性化的自然时间,但我想它只适用于DateTimeField。我使用的是DateField。Django - 无法在模板中加载自定义过滤器
我有一个像这样的自定义过滤器(app_filters.py);
from django import template
from datetime import date
register = template.Library()
@register.filter(name='days_since')
def days_since(value):
delta = value - date.today()
if delta.days == 0:
return 'Today'
elif delta.days < 1:
return '{} days ago'.format(abs(delta.days))
elif delta.days == 1:
return 'Tomorrow'
elif delta.days > 1:
return 'In {} days'.format(delta.days)
这是应用程序文件夹;
app/
models.py
views.py
...
templatetags/
__init__.py
app_filters.py
我加入了“应用”到INSTALLED_APPS settings.py中 我想在这样的模板使用此过滤器;
{% extends 'app/base.html' %}
{% load app_filters %}
{{ entry.date_updated | days_since }}
然后我得到错误:'app_filters'不是注册的标签库。
我的错误在哪里?
可以加载从壳过滤器文件?在'python manage.py shell'中尝试类似'from app.templatetags import app_filters'。也有可能在app_filters.py的某个地方出现错误,并且Django没有把它传递给你。另外,请原谅明显的问题,但您是否尝试重新启动服务器? – borfast
'app_filters.py'没有错误,我只是试了一下,它工作得很好。我确实遇到了与你一样的错误,但在我的情况下,这是因为我的'templatetags'文件夹位于错误的位置,因此即使该应用程序在“INSTALLED_APPS”中也没有被拾取。这可能是你的情况吗? – borfast
尝试在项目目录中创建您的模板标签文件夹。它将按预期工作。 – Aniket