base.htmlを継承してコード量を減らす
やっとテンプレート継承の恩恵を受けられた!
base.htmlには普通にHTMLタグを書く bodyタグの中は空っぽ
<!DOCTYPE html> {% load static %} {% load bootstrap4 %} <html lang="en"> <head> <meta charset="UTF-8"> <title>TITLE</title> <link rel="stylesheet" href="../../static/redo/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> </head> <body> <div class="container"> {% block content %}{% endblock %} </div> </body> </html>
継承したテンプレートはHTMLタグを省略できる (base.htmlの{% block content %}~{% endblock %}に挿入する部分だけ記述でOK)
{% extends "redo/base.html" %} {% load bootstrap4 %} {% block title %}類語検索{% endblock %} {% block content %} <p>メッセージを入力してください</p> <form action="{% url 'redo:register_message' %}" method="post">{% csrf_token %} {% bootstrap_form form layout='horizontal' %} <div class="form-group row"> <div class="offset-md-3 col-md-9"> <button type="submit" class="btn btn-outline-primary">submit</button> </div> </div> </form> {{ message }} {% endblock %}
継承したテンプレートに記述した入力フォームが表示された!
画面に何も表示されない時は
継承元テンプレート(base.html)と継承するテンプレートで使っているタグ名が違っているはず!
(継承元:{% block content %}
継承先:{% block contents %}
など)
これに気づかず30分くらいハマった。。。