# Request對象
* 服務器接收到HTTP協議的請求后,會根據報文創建HttpRequest對象
* 視圖函數的第一個參數是HttpRequest對象
* 在django.http模板中定義了HttpRequest對象的API
## 屬性
* 下面除非特別說明,屬性都是只讀的
* path:一個字符串,請求的頁面的完整路徑,不包含域名
* method:一個字符串,表示請求使用的HTTP方法,常用值包括:"GET"、“POST”
* encoding:一個字符串,表示提交的數據的編碼方式
* 如果為None則表示使用瀏覽器的默認設置,一般為utf-8
* 這個屬性是可寫的,可以通過修改它來修改訪問表單數據使用的編碼,接下來對屬性的任何訪問將使用新的encoding值
* GET:一個類似于字典的對象,包含get請求方式的所有參數
* POST:一個類似于字典的對象,包含post請求方式的所有參數
* FILES:一個類似于字典的對象,包含所有的上傳文件
* COOKIES:一個標準的python字典,包含所有的cookie,鍵和值都為字符串
* session:一個即可讀又可寫的類似于字典的對象,表示當前的會話,只有當Django啟用會話的支持時才可用,詳見內容"狀態保持"
```text
配置路由urls.py
url(r'^attribles/$',views.attribles),
views.py 視圖
def attribles(request):
print(request.path)
print(request.method)
print(request.encoding)
print(request.GET)
print(request.POST)
print(request.FILES)
print(request.COOKIES)
print(request.session)
return HttpResponse("attribules")
"""
/attribles/
GET
None
<QueryDict: {}>
<QueryDict: {}>
<MultiValueDict: {}>
{'csrftoken': 'qI8DT2TLUxr0Hm1B1WkmtGhhMgzU8BAgkNSJ0adLpH2m1ZtUCR2UPboln4APK54B', 'sessionid': 'o05tno2zmm5gtietf672
d6b368qvasn4'}
<django.contrib.sessions.backends.db.SessionStore object at 0x00000288BCBFF160>
"""
```
## 方法
* is\_ajax\(\):如果請求是通過XMLHttpRequest發起的,則返回True