ビューには、ビュー関連のロジックのみを含める必要があります。
- ビューは、リクエストを処理し、リクエストされたデータを提供するためのものです
- これには、ユーザーの承認/許可の確認と、指定されたパラメーターの処理が含まれます
- 要求されたデータを取得するのが簡単でない場合は、コードをより適切な場所 (モデルまたはフォームの定義、または別のカスタム プレース) に外部委託します。
計算を外部委託して再利用可能にし、ビューからこれらのメソッドを呼び出してサイズを小さく保ちます。
それにもかかわらず、他の何か、つまり と を含むテンプレートが必要になる場合がextends
ありinclude
ます。
HTML コードのベース レイアウトを作成し、extends
別の場所でレンダリングできる特定のブロックを定義できます。例?Ok。
base.html:
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{% block title %}My Site{% endblock %}</title>
</head>
<body>
<div id="header">
<h1>My Site</h1>
</div>
{% block content %}{% endblock %}
</body>
</html>
次に、他のテンプレートで、基本テンプレートで定義したブロックtitle
を上書きできます。content
{% extends "base.html" %}
{% block title %}My Page{% endblock %}
{% block content %}
<h2>My Page</h2>
<div>lorem ipsum</div>
{% endblock %}
また、次のようなサブテンプレートを作成できます。名前を付けましょう_item.html
。
<li class="item">
<span>{{ something.foo }}</span>
<strong>{{ something.bar }}</span>
</li>
そのスニペットを他のテンプレートに含めて、任意の数のパラメーターを渡すことができます。
{% for something in mymodel.mym2mrelation.all %}
{% include "_item.html" with something=something only %}
{% endfor %}
当然、両方の概念を組み合わせることができます。そのようです:
{% extends "base.html" %}
{% block title %}My Page{% endblock %}
{% block content %}
<h2>My Page</h2>
<div>lorem ipsum</div>
<ul>
{% for something in mymodel.mym2mrelation.all %}
{% include "_item.html" with something=something only %}
{% endfor %}
</ul>
{% endblock %}
それが役立つことを願っています。