(2022.01.13 Thur)
視圖views逞度,python函數(shù)集供炎,接收web的請求渴逻,返回web響應(yīng)。不管請求如何碱茁,都要提供響應(yīng)裸卫。一般放在views.py文件里,也可放在其他文件里纽竣。每個視圖函數(shù)都返回一個HttpResponse對象墓贿,對象中包含響應(yīng)。視圖函數(shù)的兩個重要對象蜓氨,分別是輸入的請求對象request
和響應(yīng)對象HttpResponse
聋袋。
請求對象request
請求對象request,包含了HTTP請求報文的基本信息(點擊這里查看)穴吹,重要屬性如下
GET
包含HTTP GET的所有參數(shù)幽勒,其數(shù)據(jù)類型是QueryDict,類Python字典港令。若有相同key啥容,則所有值放在對應(yīng)列表里锈颗。
# views.py
def fun(request):
d = request.GET.get('date') # 如果'date'含多個值,則只去最后的值
return HttpResponse(d)
POST
包含HTTP POST的所有參數(shù)咪惠,類型同GET击吱。常用于表單form,form中的name對應(yīng)了POST參數(shù)的key遥昧,value對應(yīng)了POST參數(shù)的value覆醇。
body
數(shù)據(jù)類型為二進(jìn)制字節(jié)流,原生請求體中的參數(shù)炭臭,用于POST請求永脓,因為GET請求沒有body。
def fun(request):
u = request.body
print(u)
return HttpResponse(u)
path
字符串類型鞋仍,URL中的路徑部分常摧。
request.path
method
獲取當(dāng)前請求方式,字符串類型凿试,大寫排宰。
def xxx(request):
...
print(request.method)
return xxx
$ POST
視圖響應(yīng)對象的三種形式
HttpResponse
,redirect
那婉,render
,其中后兩種是第一種的封裝党瓮。render
底層返回的是HttpResponse
详炬,redirect
底層繼承的是HttpResponse
。
-
HttpResponse
: 返回文本寞奸,參數(shù)為字符串呛谜,字符串中寫文本內(nèi)容,如果字符串里含有HTML標(biāo)簽/格式枪萄,也可以渲染隐岛。 -
render
:格式render(request, 'xxx.html', {"field": "value"})
,返回xxx.html
頁面瓷翻,最后一個字典用于傳遞參數(shù)進(jìn)該頁面聚凹。 -
redirect
:格式redirect('xxx.html')
,重定向齐帚,跳轉(zhuǎn)新頁面妒牙,參數(shù)為字符串,也就是跳轉(zhuǎn)的頁面对妄。一般用于表單form提交后湘今,跳轉(zhuǎn)到新頁面。
Reference
1 runoob菜鳥教程
2 Django doc