loadタグ

loadタグ

Djangoはloadタグと呼ばれるHTMLファイルに埋め込めるタグがあります。
それを使うことでカスタムタグテンプレートタグセットを読み込むことが出来ます。

カスタムタグの作成

今回は2倍にするカスタムタグを作っていきます。

まずsample_app直下にtemplatetagsを作り、その下にinit.pytwice.pyを作ります。


sample_app
|-- __init__.py
|-- admin.py
|-- apps.py
|-- migrations
|-- models.py
|-- templatetags
|   |-- init.py
|   `-- twice.py
|-- tests.py
|-- urls.py
`-- views.py

次にtwice.pyにコードを書いていきます。

templatetags/twice.py


from django import template

register = template.Library()


@register.simple_tag
def twice_number(number):
    return number * 2

registerでカスタムタグが登録されます。
単純に受け取った値を2倍にして返します。

HTMLファイルに埋め込む

先程作成したタグを早速埋め込んでみましょう。


index.html

{% extends 'base.html' %}
{% load static %}
{% load twice %}

{% block main %}
<h1>Twice number sample</h1>
<p>{% twice_number 1 %}</p>
<p>{% twice_number 2 %}</p>
<p>{% twice_number 3 %}</p>
{% endblock %}

{% load twice %}twice.pyをloadし、{% twice_number 1 %}twice_number関数に引数,1を渡しています。

python manage.py runserverをしてみましょう。
それぞれ2倍になっているのが確認出来るはずです。

注意

カスタムタグのファイルに変更を加えたらrunserverし直しましょう。
そうしないと反映されないのでご注意ください。