Django请求响应对象
请求与响应对象
HttpRequest
HttpRequest存储了客户请求的相关参数和一些查询方法。
- path
请求页面的全路径,不包括域名—例如, "/hello/"。
- method
Http请求方法,包括'GET','POST'。
- GET
QueryDict类实例,包含所有HTTP GET参数的字典对象。
- POST
QueryDict类实例,包含所有HTTP POST参数的字典对象。
- REQUEST
为了方便,该属性是POST和GET属性的集合。
- COOKIES
包含所有Cookies的标准Python字典对象,Keys和Values都是字符串。
HttpRequest.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
返回签名过的Cookie 对应的值,如果签名不再合法则返回django.core.signing.BadSignature。如果提供default 参数,将不会引发异常并返回default 的值。
可选参数salt可以用来对安全密钥强力攻击提供额外的保护。
max_age参数用于检查Cookie 对应的时间戳以确保Cookie 的时间不会超过max_age秒。
HttpRequest.session.set_test_cookie()
设置测试cookie,检验客户端是否支持cookie
HttpRequest.session.test_cookie_worked()
检测测试cookie,客户端支持时返回True。
在set_test_cookie
的同一次请求-响应中test_cookie_worked
的结果是不可靠的。
- FILES
包含所有上传文件的类字典对象。
FILES中的每个Key都是<input type="file" name="" />
标签中name属性的值,FILES中的每个value 同时也是一个标准Python字典对象,包含3个Key:
"filename"
"content-type"
"content"
- 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头信息
- session
可读写的session对象
- raw_post_data
原始的POST数据
- 其它
HttpRequest.is_secure()
请求是否由Https协议发起
HttpRequest.is_ajax()
请求是否由Ajax协议发起
QueryDict
HttpRequest中的GET和POST属性都是django.http.QueryDict类的实例,它是dict派生类。提供了对一键多值的支持和相关操作方法。
HttpResponse
- content
HttpResponsee.content是存储响应内容的字符串,
- item
HttpResponse.__setitem__(header, value)
设置响应头属性
HttpResponse.__delitem__(header)
删除响应头属性
HttpResponse.__getitem__(header)
访问响应头属性
HttpResponse.has_header(header)
检查是否存在响应头属性
- cookie
HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)
设置cookie
HttpResponse.delete_cookie(key, path='/', domain=None)
删除cookie
HttpResponse.set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=True)
使用带有密钥签名的数据
JsonResponse
JsonResponse是HttpResponse的子类,用于生成一个Json格式而非html/xml的响应。
JsonResponse.__init__(data, encoder=DjangoJSONEncoder, safe=True, **kwargs)
在safe参数为True时,只接受dict对象作为参数,并将Dict作为Json字符串;在safe=False时使用ncoder=django.core.serializers.json.DjangoJSONEncoder
参数指定的encoder。
from django.http import JsonResponse
def test_json(request):
response = JsonResponse({'foo': 'bar'})
return response