模板二(標籤)
阿新 • • 發佈:2021-07-15
2、標籤(tag)的使用
使用大括號和百分比的組合來表示使用標籤。
語法:{% tag %}
#常用標籤
{% if %}內容{% endif %} 計算一個變數值,如果是True,則會顯示之間的內容
說明:{% if %}標籤可以和and、or或者not聯合使用,但是在同一標籤裡面不能同時出現and和or
{% for %}內容{% endfor %} 允許按順序遍歷一個序列中的各個元素,每次迴圈模板系統都會渲染之間的內容
# 在標籤裡新增reversed來反序迴圈列表:
{ % for obj in list reversed %}
...
{ % endfor %}
{% url %} 引用路由配置的地址
{% with %}內容{% endwith %} 用更簡單的變數名替代複雜的變數名
{% verbatim %}內容{% endverbatim %} 禁止render
{% load %}內容{% endload %} 某些應用提供自定義標籤和過濾器庫. 要在一個模板中訪問它們, 使用 {% load %} 標籤:
#例項
1.if標籤的使用
{% if num >= 90 and num <= 100 %}
<p>優秀</p>
{% elif num >= 80 %}
<p>良好</p>
{% elif num >= 70 %}
<p>一般</p>
{% elif num >= 60 %}
<p>合格</p>
{% else %}
<p>不合格</p>
{% endif %}
2.for標籤的使用
forloop.counter,從1開始計數
{% for l_1 in li %}
<h1>{{ forloop.counter }}-{{ l_1 }}</h1>
{% endfor %}
forloop.counter0,從0開始計數
{% for l_2 in li %}
<h1>{{ forloop.counter0 }}-{{ l }}</h1>
{% endfor %}
forloop.revcounter,逆序從1開始計數
{% for 1_3 in li %}
<h2>{{ forloop.revcounter }}:{{ l }}</h2>
{% endfor %}
forloop.revcounter0,逆序從0開始計數
{% for l_4 in li %}
<h2>{{ forloop.revcounter0 }}:{{ l }}</h2>
{% endfor %}
{% for i in li %}
<li>{{ forloop.counter0 }}----{{ i }}</li>
empty,如果迴圈的東西是空的,則執行empty下面的
{% empty %}
<li>this is empty!</li>
{% endfor %}
3.url和csrf_token標籤的使用
<form action="{% url 'login' %}" method="poast">
<p>姓名<input type="text" name="user"></p>
<p>密碼<input type="text" name="pwd"></p>
<p><input type="submit"></p>
用於防止跨站攻擊驗證
{% csrf_token %}
</form>
4.with標籤的使用
{% with total=dfdfsfsdfdf %}
{{ total }}
{% endwith %}
5.verbatim標籤:此處的結果就是{{ 禁止render }}
{% verbatim %}
{{ 禁止render }}
{% endverbatim %}
3、自定義標籤
filter:傳一個引數
1.在APP中建立templatetags模板(即建立一個名為templatetags的資料夾)
2.在模板裡面建立任意.py檔案;如:my_tag.py
檔案中內容固定部分
from django import template
from django.utils.safestring import mark_safe
register = template.Library() # register是固定的,不能變
# 自定義部分
@register.filter
def filter_multi(x, y):
return x * y
@register.simple_tag
def add(x,y):
return x+y
3.在使用自定義simple_tag和filter的HTML檔案中匯入之前建立的.py檔案, 如:my_tag.py。匯入方式為
{ % load my_tag.py %}
4.使用simple_tag和filter
.html檔案內容
{ % load
xxx %} # 首行
# num=12
{{num | filter_multi: 2}} # 24
{{num | filter_multi: "[22,333,4444]"}}
{ % simple_tag_multi 2 5 %} 引數不限, 但不能放在if和for語句中
{ % simple_tag_multi num 5 %}
5.在setting中的INSTALLED_APPS配置當前APP