
## 常用的模板標簽
1.if標簽:if標簽相當于Python中的if語句,有elif和else相對應,但是所有的標簽都需要用標簽符號({%%})進行包裹。if標簽中可以使用==、!=、<、<=、>、>=、in、not in、is、is not等判斷運算符。
```
{% if age > 18 %}
<p>您是成年人了</p>
{% elif age == 18 %}
<p>您剛滿18歲</p>
{% else %}
<p>您是未成年人</p>
{% endif %}
{% if "張三" in persons %}
<p>張三</p>
{% else %}
<p>李四</p>
{% endif %}
用in的時候會判斷類型是否相同,如果類型不相同也會判定不在列表里面
```
2.for...in...標簽:for...in...類似于Python中的for...in...。可以遍歷列表、元組、字符串、字典等一切可以遍歷的對象。
```
{% for book in books %}
<p>{{ book }}</p>
{% endfor %}
# 反向遍歷
{% for book in books reversed %}
<p>{{ book }}</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,以此類推。并且是以1作為最后一個元素的下標。
forloop.revcounter0:類似于forloop.revcounter。不同的是最后一個元素的下標是從0開始。
forloop.first:是否是第一次遍歷。
forloop.last:是否是最后一次遍歷。
forloop.parentloop:如果有多個循環嵌套,那么這個屬性代表的是上一級的for循環。
```
3.for...in...empty標簽:這個標簽使用跟for...in...是一樣的,只不過是在遍歷的對象如果沒有元素的情況下,會執行empty中的內容。
```
{% for person in persons %}
<li>{{ person }}</li>
{% empty %}
暫時還沒有任何人
{% endfor %}
```
注意:在for循環中,break,continue語句是用不了的。
4.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>
```
更多標簽:https://docs.djangoproject.com/en/2.0/ref/templates/builtins/
- 空白目錄
- 1-Django前導知識
- 1-1-虛擬環境
- 1-2-Django框架介紹與環境搭建
- 2-URL與視圖
- 2-1-URL與視圖
- 3-模板
- 3-1-模板介紹
- 3-2-模板變量
- 3-3-常用標簽
- 3-4-模板常用過濾器
- 3-5-模板結構優化
- 3-6-加載靜態文件
- 4-數據庫
- 4-1-操作數據庫
- 4-2-圖書管理系統
- 4-3-ORM模型介紹
- 4-4-ORM模型的增刪改查
- 4-5-模型常用屬性
- 4-6-外鍵和表
- 4-7-查詢操作
- 4-8-QuerySet的方法
- 4-9-ORM模型練習
- 4-10-ORM模型遷移
- 5-視圖高級
- 1-Django限制請求method
- 2-頁面重定向
- 3-HttpRequest對象
- 4-HttpResponse對象
- 5-類視圖
- 6-錯誤處理
- 6-表單
- 1-用表單驗證數據
- 2-ModelForm
- 3-文件上傳
- 7-session和cookie
- 1-session和cookie
- 8-memcached
- 1-memcached
- 9-阿里云部署
- 阿里云部署