テンプレート
test
test2
{% load static %} <!DOCTYPE html> <html lang="ja"> <head> <title>{% block title %}{% endblock %}</title> <link href="{% static 'css/styles.css' %}" rel="stylesheet" /> </head> <body> {% block body %}{% endblock %} <script src="{% static 'js/scripts.js' %}"></script> </body> </html>
{% extends 'base.html' %} {% block title %}test_title{% endblock %} {% block body %} <div>test</div> <div>test2</div> {% endblock %}
Djangoのテンプレートでは通常のHTMLの記述とは別にDjango独自のタグを使用することもできます。
上の例ではまず、土台となるテンプレートとしてbase.htmlを作成しています。
1行目の{% load static %}は、settings.pyで設定したstaticフォルダのファイルを読み込むという内容になっています。
settings.pyで
の部分を
とすることでプロジェクト直下のstaticフォルダのファイルを読み込むことができるようになります。
staticフォルダのファイルは、
のような形式で読み込むことができます。
上の例では、static/css/styles.cssとstatic/js/scripts.jsの2つのファイルを読み込んでいる例です。
特定の場所に別ファイルのHTMLなどを埋め込みたいときは土台側のHTMLファイルに、
と記入し、埋め込む側のHTMLには、先頭に
と記入して土台側のHTMLを読み込ませ、
埋め込みたい場所は
とすることで土台側の同じブロック名の場所に埋め込まれます。
また、
の形式で記入することで、urls.pyの一致するnameのURLを埋め込むことができます。
Djangoのテンプレートでは、views.pyから受け取った変数等を利用して、if文、for文を記入することができます。
の形式でif文、
の形式でfor文を記入することができます。
また、フォームやAjaxなどでサーバーサイドにデータを送るときはフォーム内やAjax内に
を記入することでなりすましを防ぐことができます。
その他にも様々なタグがあるので興味のある方は調べてみてください。
上の例ではまず、土台となるテンプレートとしてbase.htmlを作成しています。
1行目の{% load static %}は、settings.pyで設定したstaticフォルダのファイルを読み込むという内容になっています。
settings.pyで
STATIC_URL = "static/"
の部分を
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
とすることでプロジェクト直下のstaticフォルダのファイルを読み込むことができるようになります。
staticフォルダのファイルは、
<<link href="{% static 'staticフォルダからのパス' %}" rel="stylesheet">
<script src="{% static 'staticフォルダからのパス' %}"></script>
<script src="{% static 'staticフォルダからのパス' %}"></script>
のような形式で読み込むことができます。
上の例では、static/css/styles.cssとstatic/js/scripts.jsの2つのファイルを読み込んでいる例です。
特定の場所に別ファイルのHTMLなどを埋め込みたいときは土台側のHTMLファイルに、
{% block ブロック名 %}{% endblock %}
と記入し、埋め込む側のHTMLには、先頭に
{% extends '土台側のHTMLのファイル名' %}
と記入して土台側のHTMLを読み込ませ、
埋め込みたい場所は
{% block ブロック名 %}埋め込み内容{% endblock %}
とすることで土台側の同じブロック名の場所に埋め込まれます。
また、
{% url 'urls.pyで定義しているname' %}
の形式で記入することで、urls.pyの一致するnameのURLを埋め込むことができます。
Djangoのテンプレートでは、views.pyから受け取った変数等を利用して、if文、for文を記入することができます。
{% if 条件 %}
条件に一致したときの処理
{% elif 条件2 %}
条件2に一致したときの処理
{% else %}
条件に一致しなかったときの処理
{% endif %}
条件に一致したときの処理
{% elif 条件2 %}
条件2に一致したときの処理
{% else %}
条件に一致しなかったときの処理
{% endif %}
の形式でif文、
{% for 代入する変数 in views.pyから受け取った変数 %}
繰り返し時の処理
{% endfor %}
繰り返し時の処理
{% endfor %}
の形式でfor文を記入することができます。
また、フォームやAjaxなどでサーバーサイドにデータを送るときはフォーム内やAjax内に
{% csrf_token %}
を記入することでなりすましを防ぐことができます。
その他にも様々なタグがあるので興味のある方は調べてみてください。