一般的なテンプレートタグ
1.if声明
1.すべてのタグ{%%}
の間に
タグを終了タグ2.Ifは。です{% endif %}
。
3.Ifはタグオペレータの判断は、Pythonの演算子は同じと判断されただけのよう。==、!=、<、<=、>、>=、in、not in、is、is not
オペレータ等の分析
4も使用することができますelif
とelse
2. for...in...
タグ:
for...in...
同様Python
の中でfor...in...
。リスト、タプル、文字列、辞書を通過することができますし、すべてのオブジェクトをトラバースすることができます。次のようにサンプル・コードは次のとおりです。
{% for person in persons %}
<p>{{ person.name }}</p>
{% endfor %}
あなたがトラバーサルを逆にしたい場合は、トラバーサルの時間に追加しますreversed
。次のようにサンプル・コードは次のとおりです。
{% for person in persons reversed %}
<p>{{ person.name }}</p>
{% endfor %}
辞書、使用横断するときitems
、keys
およびvalues
他の方法を。DTL
行う方法括弧の形で使用することができません。次のサンプルコードを横断辞書:
{% for key,value in person.items %}
<p>key:{{ key }}</p>
<p>value:{{ value }}</p>
{% endfor %}
ではfor
、サイクル、DTL
それが利用可能な変数の数を提供します。次のようにこれらの変数は以下のとおりです。
forloop.counter
:現在のループインデックス。開始値として1。forloop.counter0
:現在のループインデックス。開始値として0。forloop.revcounter
:現在の逆サイクルインデックス値。例えば、リストは、5つの要素を有し、このプロパティを介して初めてように、5に等しい4つの第2、及びです。1と最後の要素の添え字の通りです。forloop.revcounter0
:類似forloop.revcounter。違いは、最後の要素の添字がゼロです。forloop.first
:それは通じ初めてであるかどうか。forloop.last
:それは最後のトラバーサルがあるかどうか。forloop.parentloop
:複数のネストされたループがある場合、このプロパティは、forループの上位レベルを表します。
Pythonであるため...で...続けると声明を壊さないテンプレートは、我々は明確に覚えておく必要があり、非常に異なっています!
3. for...in...empty
タグ:
でこのタグを使用してfor...in...
同じ、しかし物体がケースの要素が存在しないことを横断している場合、実行するempty
コンテンツを。次のようにサンプル・コードは次のとおりです。
{% for person in persons %}
<li>{{ person }}</li>
{% empty %}
暂时还没有任何人
{% endfor %}
4.withタグ:
1.テンプレートでは、変数を定義したい、できるwith
文を実現すること。
2. with
2つの方法で使用ステートメント、最初は、with xxx=xxx
第二の形でwith xx as xx
形。
変数だけ文で定義します3.文でブロック内で使用されるブロックは、この変数の対象ではありません
サンプルコードは次のとおりです。
{% with zs=persons.0%}
<p>{{ zs }}</p>
<p>{{ zs }}</p>
{% endwith %}
下面这个因为超过了with语句块,因此不能使用
<p>{{ zs }}</p>
{% with persons.0 as zs %}
<p>{{ zs }}</p>
{% endwith %}
5.urlラベルの注意事項:
url
タグ:テンプレートで、私たちはしばしばいくつかの書き込みurl
など、a
ラベルを定義する必要href
のプロパティを。もちろん、この直接通じハードコード化された方法であればurl
死んで内部を記述することも可能です。しかし、将来のメンテナンスのため、このプロジェクトは良いことではないかもしれません。に似て逆転、達成するためにこの方法を使用することが推奨されて同じことを。次のようにサンプル・コードは次のとおりです。django
reverse
<a href="{% url 'book:list' %}">图书列表页面</a>
場合はurl
、必要にパラメータを渡すときの逆、あなたは後ろに渡すことができます。しかし、パラメータと位置パラメータキーワード引数。位置パラメータとキーワード・パラメータを同時に使用することはできません。次のようにサンプル・コードは次のとおりです。
# path部分
path('detail/<book_id>/',views.book_detail,name='detail')
# url反转,使用位置参数
<a href="{% url 'book:detail' 1 %}">图书详情页面</a>
# url反转,使用关键字参数
<a href="{% url 'book:detail' book_id=1 %}">图书详情页面</a>
あなたが使用したい場合はurl
ラベルがクエリ文字列パラメータを渡すために反転した場合は、手動で後から追加する必要があります。次のようにサンプル・コードは次のとおりです。
<a href="{% url 'book:detail' book_id=1 %}?page=1">图书详情页面</a>
あなたが複数のパラメータを渡す必要がある場合、それは空白の方法で分離しました。次のようにサンプル・コードは次のとおりです。
<a href="{% url 'book:detail' book_id=1 page=2 %}">图书详情页面</a>
自動的6.autoescapeをエスケープ
- うのようなDTLは、これらの特殊文字をエスケープします、自動的にエスケープデフォルトでオンになっている
<
に逃れる<
ようにと。 - あなたは何をしているかわからない場合、サイトがXSSの脆弱性の傾向がありませんでしたので、自動DTLエスケープを使用することをお勧めします。
- 変数が実際に信頼されている場合は、使用することができます
autoescape
次のサンプルコードの自動エスケープを無効にするタグ:
{% autoescape off %} {% info %} {% endautoescape%}
7.verbatimラベル
verbatim
タグ:デフォルトDTL
。テンプレートは、次のようなこれらの特別な文字を解決するために起こっている{{
、{%
そして、%}
あなたはコードを使用したくない場合など。DTL
エンジンの解析、そしてあなたがそのコードスニペットを使用することができverbatim
、サンプルコード内のタグを次のように
{% verbatim %}
{{ hello }}
{% endverbatim %}