国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django的HttpRequest和HttpResponse對象詳解

2020-02-22 23:00:59
字體:
來源:轉載
供稿:網友

本文研究的主要是Django的HttpRequest和HttpResponse對象的相關內容,具體如下。

請求一張頁面時,Django把請求的metadata數據包裝成一個HttpRequest對象,然后Django加載合適的view方法,把這個HttpRequest 對象作為第一個參數傳給view方法。任何view方法都應該返回一個HttpResponse對象。
我們在本書中大量使用這兩個對象;本附錄詳細解釋HttpRequest和HttpResponse對象。

HttpRequest

HttpRequest代表一個來自uesr-agent的HTTP請求。

大多重要的請求信息都是作為HttpRequest 對象的屬性出現(see Table H-1). 除了session外,其他所有屬性都是只讀的。

Table H-1. 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

為了方便,該屬性是POST和GET屬性的集合體,但是有特殊性,先查找POST屬性,然后再查找GET屬性。借鑒PHP's $_REQUEST。

例如,如果GET = {"name": "john"} 和POST = {"age": '34'},則 REQUEST["name"] 的值是"john", REQUEST["age"]的值是"34".

強烈建議使用GET and POST,因為這兩個屬性更加顯式化,寫出的代碼也更易理解。

COOKIES

包含所有cookies的標準Python字典對象。Keys和values都是字符串。參見第12章,有關于cookies更詳細的講解。

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時該屬性才可用

關于認證和用戶的更詳細講解,參見第12章。

session

唯一可讀寫的屬性,代表當前會話的字典對象。只有激活Django中的session支持時該屬性才可用。 參見第12章。

raw_post_data

原始HTTP POST數據,未解析過。 高級處理時會有用處。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松阳县| 金川县| 蓝田县| 南京市| 资兴市| 宜州市| 陕西省| 乐陵市| 建瓯市| 凤庆县| 屏山县| 灌云县| 莱西市| 宁夏| 隆安县| 小金县| 仙游县| 观塘区| 枞阳县| 广昌县| 叙永县| 奉化市| 龙山县| 杭锦后旗| 荆门市| 启东市| 南皮县| 松桃| 巩义市| 壶关县| 报价| 清水河县| 闽清县| 河东区| 邵阳市| 乌海市| 将乐县| 长丰县| 青州市| 双桥区| 宝清县|