1. 程式人生 > >初步學習Django-第四篇:views.PY文件詳解

初步學習Django-第四篇:views.PY文件詳解

string 服務器端 Language 文件名 lse 移除 情況 rri 主機名

http請求中產生的兩個核心對象:

技術分享圖片

http請求:HttpRequest
http響應:HttpResponse

所在位置:from django.http import HttpRequest,HttpResponse

1、HttpRequest:
HttpRequest對象的屬性:

Attribute         Description      
path      

請求頁面的全路徑,不包括域名—例如,

“/music/bands/the_beatles/”

method  

請求中使用的HTTP方法的字符串表示。全大寫表示。例如:

if request.method == ‘GET‘:

do_something()

elif request.method == ‘POST‘:

do_something_else()                                   

GET 包含所有HTTP GET參數的類字典對象。參見QueryDict文檔。
POST  

包含所有HTTP POST參數的類字典對象。參見QueryDict文檔。

服務器收到空的POST請求的情況也是有可能發生的。也就是說,表單form通過HTTP POST方法提交

請求,但是表單中可以沒有數據。不能使用語句if request.POST來判斷是否使用HTTP POST方法;

應該使用if request.method == ‘POST‘ (參見本表的method屬性)。

註意:POST不包括file-upload信息。參見FILES屬性。

REQUEST

這個屬性再django1.9裏面已經被移除掉了。

COOKIES 包含所有cookies的標準python字典對象。Keys和values都是字符串。
FILES

包含所有上傳文件的類字典對象。FILES中的每個Key都是<input type="file" name=""/>標簽中

name屬性的值。FILES中的每個value同時也是一個標準Python字典對象,包含下面三個Keys:

  • filename:上傳文件名,用Python字符串表示
  • content-type:上傳文件的Content type
  • content:上傳文件的原始內容

註意:只有在請求方法是POST,並且請求頁面中<form>有enctype="multipart/form-data"屬性時FILES才擁有數據。否則,FILES是一個空字典。

META  

包含所有可用HTTP頭部信息的字典。例如:

  • CONTENT_LENGTH
  • CONTENT_TYPE
  • QUERY_STRING:未解析的原始查詢字符串
  • REMOTE_ADDR:客戶端IP地址
  • REMOTE_HOST:客戶端主機名
  • SERVER_NAME:服務器主機名
  • SERVER_PORT:服務器端口

META中這些頭加上前綴HTTP_最為Key,例如:

HTTP_ACCEPT_ENCODING

HTTP_ACCEPT_LANGUAGE

HTTP_HOST:客戶發送的HTTP主機頭信息

HTTP_REFERER:referring頁

HTTP_USER_AGENT:客戶端的user-agent字符串

HTTP_X_BENDER:X-Bender頭信息

user

是一個django.contrib.auth.models.User對象,代表當前登錄的用戶。如果訪問用戶當前沒有登錄,user將被初始化為django.contrib.auth.models.AnonymousUser的實例。你可以通過user的is_authenticated()方法來辨別用戶是否登錄;

if request.user.is_authenticated():

#Do something for logged-in users.

else:

#Do something for anonymous users.

只有激活Django中的AuthenticationMiddleware時該屬性才可用

session 唯一可讀寫的屬性,代表當前會話的字典對象。只有激活Django中的session支持時該屬性才可用。
raw_post_data 原始HTTP POST數據。未解析過。高級處理時會有用處。

HttpRequest對象的方法(部分):

get_full_path()   返回包含查詢字符串的請求路徑。例如,"/music/bands/the_beatles/?print=true"  

QueryDict對象(部分)

get() 如果key對應多個value,get()返回最後一個value。

在HttpRequest對象中,GET和POST屬性時django.http.QueryDict類的實例。

2、HttpResponse:

初步學習Django-第四篇:views.PY文件詳解