Djangoの{% load static %}
は同一のファイル内でしか有効でない。
ロードすべき箇所に注意しないと、以下のようなエラーが表示される。
django.template.exceptions.TemplateSyntaxError: Invalid block tag on line **: 'static', expected 'endblock'. Did you forget to register or load this tag?
×ダメな例
{# app/base.htmlの中で`load static`している #}
{% extends 'app/base.html' %}
{% block content %}
<p>content here</p>
{% endblock %}
{% block extra_js %}
{# 下の行でコケる #}
<script src="{% static 'app/js/jsfile.js' %}"></script>
{% endblock %}
○良い例
{% extends 'app/base.html' %}
{% load static %} {# <--これが大切 #}
{% block content %}
<p>content here</p>
{% endblock %}
{% block extra_js %}
{# 無事レンダリングされる #}
<script src="{% static 'app/js/jsfile.js' %}"></script>
{% endblock %}
公式 https://docs.djangoproject.com/en/2.2/howto/custom-template-tags/ に同一ファイル内で使えるという趣旨の記述があった。
You can extend the template engine by defining custom tags and filters using Python, and then make them available to your templates using the {% load %} tag.
覚えておこう。
広告
現場で使える Django の教科書《基礎編》
posted with amazlet at 19.04.27
横瀬 明仁
NextPublishing Authors Press (2018-08-26)
売り上げランキング: 21,700
NextPublishing Authors Press (2018-08-26)
売り上げランキング: 21,700
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
posted with amazlet at 19.04.27
Al Sweigart
オライリージャパン
売り上げランキング: 998
オライリージャパン
売り上げランキング: 998
コメント