Django學習--view.py詳解

1.http請求中產生的兩個核心對象:
http請求:HttpRequest
http響應:HttpResponse
存在於Django.http 模塊中
 
2.HttpRequest:
屬性:
HttpRequest.scheme  #一個字符串,表示請求的方案(一般是http或者https)
HttpRequest.body    #一個字節字符串,表示原始HTTP請求的正文
HttpRequest.path    #一個字符串,表示請求的頁面的完整路徑,不包含域名
HttpRequest.method   #一個字符串,表示請求使用的HTTP方法,必須使用大寫
HttpRequest.GET      #一個相似於字典的對象,包含HTTP GET的全部參數
HttpRequest.POST     #一個包含全部給定的HTTP POST參數的類字典對象,提供了包含表單數據的請求
HttpRequest.REQUEST  #一個將GET,POST屬性結合起來的屬性,但有特殊性,先查找POST屬性,後查找GET屬性,此屬性在Django1.9就已經被移除,作了解
HttpRequest.COOKIES    #一個標準的python字典,包含全部cookie,鍵和值都爲字符串
HttpRequest.FILES     #一個相似於字典的對象,包含全部的上傳文件
HttpRequest.META      #一個標準的python字典,包含全部的HTTP頭部
HttpRequest.user     #一個django.contrib.auth.models.User對象,表明當前登陸的用戶,若是訪問的用戶沒有登陸,則user將被初始化爲django.contrib.auth.models.AnonymousUser的實例,能夠經過user的in_authenticated()方法來辨別用戶是否登陸。
 
 
 
11
 
 
 
 
 
1
HttpRequest.scheme  #一個字符串,表示請求的方案(一般是http或者https)
2
HttpRequest.body    #一個字節字符串,表示原始HTTP請求的正文
3
HttpRequest.path    #一個字符串,表示請求的頁面的完整路徑,不包含域名
4
HttpRequest.method   #一個字符串,表示請求使用的HTTP方法,必須使用大寫
5
HttpRequest.GET      #一個相似於字典的對象,包含HTTP GET的全部參數
6
HttpRequest.POST     #一個包含全部給定的HTTP POST參數的類字典對象,提供了包含表單數據的請求
7
HttpRequest.REQUEST  #一個將GET,POST屬性結合起來的屬性,但有特殊性,先查找POST屬性,後查找GET屬性,此屬性在Django1.9就已經被移除,作了解
8
HttpRequest.COOKIES    #一個標準的python字典,包含全部cookie,鍵和值都爲字符串
9
HttpRequest.FILES     #一個相似於字典的對象,包含全部的上傳文件
10
HttpRequest.META      #一個標準的python字典,包含全部的HTTP頭部
11
HttpRequest.user     #一個django.contrib.auth.models.User對象,表明當前登陸的用戶,若是訪問的用戶沒有登陸,則user將被初始化爲django.contrib.auth.models.AnonymousUser的實例,能夠經過user的in_authenticated()方法來辨別用戶是否登陸。
 
 
方法:
HttpRequest.get_host()#返回請求的原始主機
HttpRequest.get_full_path()#返回path,若是能夠將加上查詢字符串例如:"/music/bands/?print=true"
HttpRequest.read(size=None)
HttpRequest.readline()
HttpRequest.readlines()
HttpRequest.xreadlines()
HttpRequest.__iter__()
#這幾個方法實現類文件的接口用於讀取HttpRequest.示例。這使得能夠用流的方式讀#取進來的請求,一個常見的用例是使用迭代解析器處理大型XML有效載荷,而不是內存#中構造一個完整的XML樹。
 
 
 
 
 
 
 
 
 
1
HttpRequest.get_host()#返回請求的原始主機
2
HttpRequest.get_full_path()#返回path,若是能夠將加上查詢字符串例如:"/music/bands/?print=true"
3
HttpRequest.read(size=None)
4
HttpRequest.readline()
5
HttpRequest.readlines()
6
HttpRequest.xreadlines()
7
HttpRequest.__iter__()
8
#這幾個方法實現類文件的接口用於讀取HttpRequest.示例。這使得能夠用流的方式讀#取進來的請求,一個常見的用例是使用迭代解析器處理大型XML有效載荷,而不是內存#中構造一個完整的XML樹。
 
 
3.HttpResponse:
對於DjangoRequest對象來講,是由Django自動建立,而HttpResponse對象就必須咱們本身建立。每一個View方法必須返回一個HttpResponse對象。
在view.py中使用的是以下返回方式:
既然必須返回HttpResponse對象,那麼爲何這裏只返回rander對象?咱們能夠查看rander的具體構造,
能夠看到在rander函數中返回的其實也是一個HttpResponse對象,因此可使用簡便的render方法來代替HttpResponse的返回。
 
在HttpReponse對象上擴展的經常使用方法:render,render_to_response,redirect  這三個方法都在django.shortcuts 中(from django.shortcuts import render,render_to_response,redirect)
其中render_to_response和render效果同樣但更簡潔。
示例:
 
HttpResponse子類(部分):
Class Description
HttpResopnseRedirect 構造函數接受單個參數,重定向到URL,能夠是全URL,或者相對URL。注意:這裏將返回HTTP狀態碼302
HttpResponsePermanentRedirect 同HttpResponseRedirect同樣,可是返回永久重定向,HTTP狀態嗎301
HttpResponseNotFound 返回404status code
JsonResponse 返回Json字符串
 
4.locals()方法:
在render方法中以字典的形式傳遞參數時,若是所要傳遞的字典值太多,本身構造的話就會太複雜且代碼可讀性也不太好。這時就可以使用locals()方法,其會將函數中的全部變量傳遞給模板。
 
 
 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">python



相關文章
相關標籤/搜索