
## DTL模板語法
模板中可以包含變量,Django在渲染模板的時候,可以傳遞變量對應的值過去進行替換。變量的命名規范和Python非常類似,只能是阿拉伯數字和英文字符以及下劃線的組合,不能出現標點符號等特殊字符。變量需要通過視圖函數渲染,視圖函數在使用render或者render_to_string的時候可以傳遞一個context的參數,這個參數是一個字典類型。
```
# views.py代碼
def profile(request):
return render(request,'profile.html',context={'username':'juran'})
class Person(object):
def __init__(self,username):
self.username = username
def index(request):
p = Person("居然")
content = {
'person':p
}
content = {
'persons':[
'a',
'b',
'c'
]
}
return render(request,"index.html",context=content)
# profile.html模板代碼
<h1>{{ username }}</h2>
<h2>{{person.username}}</h2>
<h3>{{ persons.0 }}</h3>
```
模板中的變量同樣也支持點(.)的形式。在出現了點的情況,比如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來訪問這個字典的鍵值對了。
- 空白目錄
- 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-阿里云部署
- 阿里云部署