デルタ時間を「x日前」として表示します。私はDjangoのtimesinceフィルターを試しましたが、 'x日、x分'を返します。私は唯一の日を見せたい。私はhumanizeの自然な時間を試しましたが、私は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
私は、このようなテンプレートにこのフィルタを使用しようとしているsettings.py にINSTALLED_APPSに「アプリ」を追加。
{% 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