みずラテ

牛乳と水を2対1で。

【Django】staticタグをblockに入れるとTemplateSyntaxErrorが出るのを解決する

base.htmlを使って、共通部分をまとめようとした矢先、個別ページでだけ読み込みたいjsファイルを読み込もうとしたらエラー・・・

その解決策です。

事象

個別ページにてjsファイルを読み込む

{% block extra_js %}
  <script type="text/javascript" src="{% static 'app/js/test.js' %}"></script>
{% endblock extra_js %}

すると・・・

f:id:taris777:20180310225425p:plain

シンタックスエラー!

エラー内容は、staticじゃなくてendblockを期待していますとのこと。僕はstaticを期待していますよ〜。

解決

もちろん先人がいました。
stackoverflow.com


という訳で、staticタグを使いたい場合は、個別ページ内で{% load staticfiles%}を読み込ませる必要があるとのこと。

{% extends "app/base.html" %}
{% load staticfiles%}

1行目がextendsなので、2行目に追記します。
試しに1行目に{% load staticfiles%}入れてみたら、「1行目はextendsを書けや!」ってエラーが出たのでやめておきましょう。

これで無事シンタックスエラーが出ずに意図した動作をするようになりました。