• 2018-08-21
ウズマスター戦記
ウズマスター戦記 https://www.uzumax.org/2018/08/djangotemplatesyntaxerror-tags-is-not.html

DjangoでTemplateSyntaxError 'tags' is not a registered tag library.

Djangoで独自タグを作ろうとしていたら設定が甘くて以下のようなエラーが出てきてしまった。

TemplateSyntaxError at /uzuwiki/
'tags' is not a registered tag library. Must be one of:
cache
i18n
l10n
static
staticfiles
tz


解決方法を記録しておきます。

対策

1.templatetagsフォルダを作る

独自タグのPythonファイルを置く場所は「templatetags」という名前のフォルダとするという命名規約があるので、ちゃんと従ってください。

「templates」と同列に置くイメージです。



2.INSTALLED_APPSにパスを通す

setting.pyのINSTALLED_APPSに、独自タグのPythonファイルが入っているAPPを入れておく必要があります。

私の場合だと「commons」がちゃんと中に入っています。



3.registerアノテーションを付ける

以下のソースみたいに、「@register」のアノテーションを付けておかないとPythonファイルのソースがテンプレートタグであると認識しません。

from django import template
from django.urls import reverse

register = template.Library()


@register.simple_tag
def wiki_url(page_type, wiki_id, page_dirs):
    argzz = [wiki_id]
    argzz.extend(page_dirs)

4.テンプレートでロード

テンプレートにで独自タグをロードします。
私の場合はPythonファイルのファイル名が「tags.py」なので以下の書き方になります。

{% load tags %}

修正完了

これで冒頭のエラーは出なくなっているはずです。
後は普通のタグっぽくテンプレートで使用すればOKです。

<a href="{% wiki_url 'edit' wiki_id page_dirs %}">[編集]</a>

以上

0 件のコメント:

コメントを投稿

お気軽にコメント下さい。