scheme body(原始的請求體) POST(對應可轉換的內容)
另外提供了read這樣的文件類接口使用
path(請求的完整路徑不包含模式和域名) path_info(對於壹些服務器,把域名後的url分成了腳本前綴部分和路徑信息部分 path_info肯定是全部的)
使用path_info總是能拿到域名後的完整的url
method(方法名 大寫) encoding(默認用utf-8 在DEFAULT_CHARSET,可以改變encoding的值再獲取GET POST) content_type(字符類型拿請求頭部的CONTENT_TYPE) content_params(字典類型拿請求頭部的CONTENT_TYPE)
GET POST body FILES COOKIES
META(所有的頭部 會轉換名字 都搞成大寫的下劃線分割的同時有HTTP_的前綴)
resolver_match是對應ResolverMatch的實例,代表解析得的URL,在view中可用,但是在解析之前的middleware是獲取不到的
current_app 用於url template tag,在reverse函數的current_app參數
urlconf 用於root url conf而不是用ROOT_URLCONF中的設置
session 由SessionMiddleware設置 可讀可寫 字典類
site 由CurrentSiteMiddleware設置 是Site或RequestSite的實例,是通過get_current_site來獲取的
user 由AuthenticationMiddleware設置 是AUTH_USER_MODEL對應的實例代表當前登錄的用戶,未登錄的獲取的是AnonymousUser,可通過request.user.is_authenticated來判斷
get_host 獲得請求的主機 通過HTTP_X_FORWARDED_HOST否則用HTTP_HOST,都沒有則使用SERVER_NAME和SERVER_PORT的組合
get_full_path 獲得path加查詢字符串query_string
build_absolute_uri(location) 將location轉換為絕對地址,location不傳入時用的是get_full_path獲取,如果已經是絕對地址則不修改,用的是請求中的服務信息,例如http和https的設置
get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None) 返回壹個簽名的cookie值,或拋出BadSignature異常,如果設置了default則返回該值而不拋出異常,可以加鹽,可以設置過期
is_secure 查看是否https
is_ajax 查看是否Ajax請求,即查看頭部的HTTP_X_REQUESTED_WITH
read readline readlines xreadlines iter
主要是處理壹個名字多個值的情況,因為對於HTML中的form元素,多選的,都是相同的名字,不同的值
通過GET POST獲取的都是不可修改的,可以使用.copy()來獲取可修改的版本
實現了標準字典的所有方法
QueryDict. init (query_string=None, mutable=False, encoding=None)
classmethod QueryDict.fromkeys(iterable, value='', mutable=False, encoding=None)
QueryDict. getitem (key) 如果對應多個值 返回最後壹個
QueryDict. setitem (key, value) 設置值 value應為列表
QueryDict. contains (key) 判斷是否包含
QueryDict.get(key, default=None) 返回對應的值 沒有則返回default
QueryDict.setdefault(key, default=None) 沒有值則設置為default
QueryDict.update(other_dict)
QueryDict.items()
QueryDict.iteritems()
QueryDict.iterlists()
QueryDict.values()
QueryDict.itervalues()
QueryDict.copy()
QueryDict.getlist(key, default=None)
QueryDict.setlist(key, list_)
QueryDict.appendlist(key, item)
QueryDict.setlistdefault(key, default_list=None)
QueryDict.lists()
QueryDict.pop(key)
QueryDict.popitem()
QueryDict.dict()
QueryDict.urlencode(safe=None)
直接傳遞字符串
response = HttpResponse("Here's the text of the Web page.")
增量內容
response = HttpResponse()
response.write("<p>Here's the text of the Web page.</p>")
response.write("<p>Here's another paragraph.</p>")
使用StreamingHttpResponse來消費可叠代對象
按字典使用來設置HTTP頭部
response["Accept"] = "json"
del response['Age']
告訴瀏覽器返回的response是文件
response = HttpResponse(my_data, content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename="foo.xls"'
content charset status_code reason_phrase streaming closed
HttpResponse. init (content='', content_type=None, status=200, reason=None, charset=None)
setitem delitem getitem
has_header setdefault
set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)
set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)
delete_cookie(key, path='/', domain=None)
write(content) flush() tell() getvalue() readable() seekable() writable() writelines(lines)