# 第二節:模板變量
# DTL模板語法
## 變量:
模板中可以包含變量,`Django`在渲染模板的時候,可以傳遞變量對應的值過去進行替換。變量的命名規范和`Python`非常類似,只能是阿拉伯數字和英文字符以及下劃線的組合,不能出現標點符號等特殊字符。變量需要通過視圖函數渲染,視圖函數在使用`render`或者`render_to_string`的時候可以傳遞一個`context`的參數,這個參數是一個字典類型。以后在模板中的變量就從這個字典中讀取值的。示例代碼如下:
```
<pre class="calibre12">```
# profile.html模板代碼
<p>{{ username }}</p>
# views.py代碼
def profile(request):
return render(request,'profile.html',context={'username':'huangyong'})
```
```
模板中的變量同樣也支持`點(.)`的形式。在出現了點的情況,比如`person.username`,模板是按照以下方式進行解析的:
1. 如果`person`是一個字典,那么就會查找這個字典的`username`這個`key`對應的值。
2. 如果`person`是一個對象,那么就會查找這個對象的`username`屬性,或者是`username`這個方法。
3. 如果出現的是`person.1`,會判斷`persons`是否是一個列表或者元組或者任意的可以通過下標訪問的對象,如果是的話就取這個列表的第1個值。如果不是就獲取到的是一個空的字符串。
> 不能通過中括號的形式訪問字典和列表中的值,比如dict\['key'\]和list\[1\]是不支持的!
>
> 因為使用點(.)語法獲取對象值的時候,可以獲取這個對象的屬性,如果這個對象是一個字典,也可以獲取這個字典的值。所以在給這個字典添加key的時候,千萬不能和字典中的一些屬性重復。比如items,items是字典的方法,那么如果給這個字典添加一個items作為key,那么以后就不能再通過item來訪問這個字典的鍵值對了。
- Introduction
- 第一章:學前準備
- 第一節:虛擬環境
- 第二節:準備工作
- 第三節:Django介紹
- 第四節:URL組成部分
- 第二章:URL與視圖
- 第一節:第一個Django項目
- 第二節:視圖與URL分發器
- 第三章:模板
- 第一節:模板介紹
- 第二節:模板變量
- 第三節:常用標簽
- 第四節:常用過濾器
- 第五節:自定義過濾器
- 第七節:模版結構優化
- 第八節:加載靜態文件
- 第四章:數據庫
- 第一節:MySQL相關軟件
- 第二節:數據庫操作
- 第三節:ORM模型
- 第四節:模型常用字段
- 第五節:外鍵和表關系
- 第六節:增刪改查操作
- 第七節:查詢操作
- 第八節:QuerySet API
- 第九節:ORM模型遷移
- 第十節:ORM作業
- 第十一節:ORM作業參考答案
- 第十二節:Pycharm連接數據庫
- 第五章:視圖高級
- 第一節:限制請求method
- 第二節:頁面重定向
- 第三節:HttpRequest對象
- 第四節:HttpResponse對象
- 第五節:生成CSV文件
- 第六節:類視圖
- 第七節:錯誤處理
- 第六章:表單
- 第一節:表單概述
- 第二節:用表單驗證數據
- 第三節:ModelForm
- 第四節:文件上傳
- 第七章:cookie和session
- 第八章:上下文處理器和中間件
- 第一節:上下文處理器
- 第二節:中間件
- 第九章:安全
- 第一節:CSRF攻擊
- 第二節:XSS攻擊
- 第三節:點擊劫持攻擊
- 第四節:SQL注入
- 第十章:信號
- 第一節:什么是信號
- 第十一章:驗證和授權
- 第一節:概述
- 第二節:用戶對象
- 第三節:權限和分組
- 第十二章:Admin系統
- 第十三章:Django的緩存
- 第十四章:memcached
- 第十五章:Redis