[TOC]
django模板是一個string文本,用來從python代碼中分離一個文檔和展現數據。
模板通常用來輸出HTML,由HTML代碼和模板標簽組成。
## 模板標簽
模版包括在使用時會被值替換掉的 變量,和控制模版邏輯的 標簽。
### 變量
{{ var_name }}
雙大括號括起來的為變量,用于把數據插入HTML代碼中。
### 標簽
{% load staticfiles %}
大括號和%括起來的為標簽(tag),通常用來實現簡單的邏輯。
#### 常用的標簽
##### if標簽
{% if %}
if語句,可以用not,and,or來控制邏輯,但是不允許not,or同時出現,支持{% elif %}、{% else %}用法,符合條件顯示塊中內容。需要{% endif %}結束標簽
示例:
```html
{% if num > 100 or num < 0 %}
<p>無效</p>
{% elif num > 80 and num < 100 %}
<p>優秀</p>
{% else %}
<p>辣雞</p>
{% endif %}
```
##### ifequal和ifnotequal
比較是否相等,符合條件顯示塊中內容,只限于簡單的類型,比如字符串、整數、小數的比較,列表、字典、元組不支持。需要結束標簽{% endifequal %}。
示例:
```html
{% ifequal num1 num2 %}
<h1>嘻嘻</h1>
{% endifequal %}
```
##### for標簽
{% for %}
用來循環一個list,還可以使用reserved關鍵字來進行倒序遍歷,一般可以用if語句來西先判斷一下列表是否為空,在進行遍歷。需要結束標簽{% endfor %}
```
<ul>
{% for i in list1 %}
<li>{{ i }}</li>
{% endfor %}
</ul>
```
{{ foroop.counter }} 指示for標簽循環了多少次
##### 注釋
{# 注釋 #}
##### url
{% url %}
引入地址
```
{% url a:b c %}
```
以a開頭,b結尾的url,第三個參數會插在中間
渲染結果:
```
a/c/b
```
...
#### 過濾器
可以使用過濾器對值進行處理。
1. add 給變量加上相應的值
```
{{ value|add:"2" }}
```
2. addslashes
給變量中的引號(雙引號、單引號)前加上斜線
3. capfirst
首字母大寫
4. cut
從字符串中移除指定的字符
{{ value|cut:" " }}
5. date
格式化日期字符串
6. lower
內容轉為小寫
```
{{ "ABCD"|lower }}
```
7. join
以指定符號連接列表中的值
```
{{ list|join:"," }}
```
8. safe
解除轉義
...
## 模板標簽
模版包括在使用時會被值替換掉的 變量,和控制模版邏輯的 標簽。
### 變量
{{ var_name }}
雙大括號括起來的為變量,用于把數據插入HTML代碼中。
### 標簽
{% load staticfiles %}
大括號和%括起來的為標簽(tag),通常用來實現簡單的邏輯。
#### 常用的標簽
##### if標簽
{% if %}
if語句,可以用not,and,or來控制邏輯,但是不允許not,or同時出現,支持{% elif %}、{% else %}用法,符合條件顯示塊中內容。需要{% endif %}結束標簽
示例:
```html
{% if num > 100 or num < 0 %}
<p>無效</p>
{% elif num > 80 and num < 100 %}
<p>優秀</p>
{% else %}
<p>辣雞</p>
{% endif %}
```
##### ifequal和ifnotequal
比較是否相等,符合條件顯示塊中內容,只限于簡單的類型,比如字符串、整數、小數的比較,列表、字典、元組不支持。需要結束標簽{% endifequal %}。
示例:
```html
{% ifequal num1 num2 %}
<h1>嘻嘻</h1>
{% endifequal %}
```
##### for標簽
{% for %}
用來循環一個list,還可以使用reserved關鍵字來進行倒序遍歷,一般可以用if語句來西先判斷一下列表是否為空,在進行遍歷。需要結束標簽{% endfor %}
```
<ul>
{% for i in list1 %}
<li>{{ i }}</li>
{% endfor %}
</ul>
```
{{ foroop.counter }} 指示for標簽循環了多少次
##### 注釋
{# 注釋 #}
##### url
{% url %}
引入地址
```
{% url a:b c %}
```
以a開頭,b結尾的url,第三個參數會插在中間
渲染結果:
```
a/c/b
```
...
#### 過濾器
可以使用過濾器對值進行處理。
1. add 給變量加上相應的值
```
{{ value|add:"2" }}
```
2. addslashes
給變量中的引號(雙引號、單引號)前加上斜線
3. capfirst
首字母大寫
4. cut
從字符串中移除指定的字符
{{ value|cut:" " }}
5. date
格式化日期字符串
6. lower
內容轉為小寫
```
{{ "ABCD"|lower }}
```
7. join
以指定符號連接列表中的值
```
{{ list|join:"," }}
```
8. safe
解除轉義
...
## 模板繼承
當你寫好了一個骨架模板之后,可以用模板繼承,在子模版中使用父模板的代碼,并修改父模板的部分內容。
父模板一般命名為base.html,它定義了一些簡單的網頁框架,然后在子模版中填上其他內容。
base.html
```
<html>
<body>
<h4>圖書系統</h4>
{% block main %}
<a href="#">圖書列表</a>
{% endblock main %}
</body>
</html>
```
顯示效果如下:

繼承:
{% extends 'base.html' %}
在子模版中使用extends繼承父模板
books.html
```
{% extends 'polls/books.html' %}
{% block main %}
<ul>
<li>西游記</li>
</ul>
{% endblock main %}
```
顯示效果如下:

`block` 標簽中的內容已經被替換掉了,如果不寫自定義內容的話,將繼續使用父模板的內容。
可以用super獲取父模板block的內容:
```
{% extends 'polls/books.html' %}
{% block main %}
<ul>
{{ block.super }}
<li>西游記</li>
</ul>
{% endblock main %}
```

django模板是一個string文本,用來從python代碼中分離一個文檔和展現數據。
模板通常用來輸出HTML,由HTML代碼和模板標簽組成。
- 1.介紹
- 2.工程搭建
- 2.1.環境配置
- 2.2.創建工程
- 2.3.創建子應用
- 2.3.1.pycharm打開項目
- 2.4.創建視圖
- 3.基本配置
- 3.1.settings基本配置項
- 3.2.路由配置
- 4.請求響應
- 4.1.request
- 4.2.response
- 4.3.cookie
- 4.4.session
- 5.類視圖中間件
- 5.1.類視圖
- 5.2中間件
- 6.數據庫
- 6.1.數據庫配置
- 6.2定義模型類
- 6.3數據庫遷移
- 6.4數據庫操作
- 6.5查詢集
- 6.6模型管理器
- 7.模板表單
- 7.1使用模板
- 7.2模板標簽
- 7.3表單
- 8.后臺管理
- 8.1Admin
- 8.2自定義模型類樣式
- 8.3列表頁