エラー内容
django の template を編集して、画面表示を行ったところ、以下のエラーが発生しました。
TemplateSyntaxError at /
Invalid block tag on line 5: 'pagination_prev_next_for', expected 'endblock'. Did you forget to register or load this tag?
発生原因を調べましたので、調べた結果を記載します。
原因
独自のテンプレートタグとフィルタ | Django documentation | Django の記載を読んでいると、いくつか原因となる事象が記載されています。
load で、使用しているタグの記載を忘れている
メッセージの通りですが、Did you forget to register or load this tag?
タグのロード記載忘れが原因です。
{% load %}
の記載に対象のタグを追加することで解決しました。
INSTALLED_APPS に アプリケーションの記載がない。
以下引用です。
カスタムタグを含むアプリケーションは、{% load %} タグを機能させるために INSTALLED_APPS 内に記述される必要があります。これは、セキュリティ機能です: 毎回の Django のインストールでこれらへのアクセスを有効化することなく、単一のホストマシン上の多数のテンプレートライブラリに対して Python のコードをホストできるようにします。
register.simple_tag 関数で tag を登録していない、又は、register デコレータ を tag に付与していない。
タグは、register メソッドで登録、または、register デコレータを関数に付与しておく必要があります。
-
register メソッドで、登録する
from django import template register = template.Library() register.simple_tag(lambda x: x - 1, name='minusone')
-
register デコレータを付与する
import datetime from django import template register = template.Library() @register.simple_tag def current_time(format_string): return datetime.datetime.now().strftime(format_string)
個人的には、{% load %}
への記載忘れがパターンとして一番多い気がします。
以上です。
コメント