Django--view.py詳解
阿新 • • 發佈:2018-06-23
用例 div 而不是 pro cal -- ren sta theme 1.http請求中產生的兩個核心對象:http請求:HttpRequesthttp響應:HttpResponse存在於Django.http 模塊中
2.HttpRequest:屬性:
在HttpReponse對象上擴展的常用方法:render,render_to_response,redirect 這三個方法都在django.shortcuts 中(from django.shortcuts import render,render_to_response,redirect)其中render_to_response和render效果一樣但更簡潔。示例:
HttpResponse子類(部分):
4.locals()方法:在render方法中以字典的形式傳遞參數時,如果所要傳遞的字典值太多,自己構造的話就會太復雜且代碼可讀性也不太好。這時就可使用locals()方法,其會將函數中的所有變量傳遞給模板。
來自為知筆記(Wiz)
2.HttpRequest:屬性:
11 1HttpRequest.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()方法來辨別用戶是否登錄。
HttpRequest.scheme #一個字符串,表示請求的方案(通常是http或者https)
2HttpRequest.body #一個字節字符串,表示原始HTTP請求的正文
3HttpRequest.path #一個字符串,表示請求的頁面的完整路徑,不包含域名
4HttpRequest.method #一個字符串,表示請求使用的HTTP方法,必須使用大寫
5HttpRequest.GET #一個類似於字典的對象,包含HTTP GET的所有參數
6HttpRequest.POST #一個包含所有給定的HTTP POST參數的類字典對象,提供了包含表單數據的請求
7HttpRequest.REQUEST #一個將GET,POST屬性結合起來的屬性,但有特殊性,先查找POST屬性,後查找GET屬性,此屬性在Django1.9就已經被移除,做了解
8HttpRequest.COOKIES #一個標準的python字典,包含所有cookie,鍵和值都為字符串
9HttpRequest.FILES #一個類似於字典的對象,包含所有的上傳文件
10HttpRequest.META #一個標準的python字典,包含所有的HTTP頭部
11HttpRequest.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樹。
1HttpRequest.get_host()#返回請求的原始主機
2HttpRequest.get_full_path()#返回path,如果可以將加上查詢字符串例如:"/music/bands/?print=true"
3HttpRequest.read(size=None)
4HttpRequest.readline()
5HttpRequest.readlines()
6HttpRequest.xreadlines()
7HttpRequest.__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)
Django--view.py詳解