HttpResponse 对象
. 使用字符串 或者 bytestring去构造HttpResponse。
. 如果需要向HttpResponse添加内容, 则通过如下方式:
response = HttpResponse()
response.write(“<p>Here’s the text of the web page.</p>”)
response.write(“<p>Here’s another paragraph.</p>”)
. 去除response头部中的某些字段
response = HttpResponse()
response[‘Age’] = 120
del response[‘Age’] #注意当key不存在时 也不会引起KeyError
. 设置Cache-Control 和 Vary头部字段,可以使用patch_cache_control() 和 patch_vary_headers() 方法
. HTTP头部字段值不能包含新行(CR/LF), 否则会出现BadHeaderError
. 告诉浏览器返回的是文件附件,可以像下面这样做:
// 1.需要指定content_type; 2.需要设置Content-Disposition头
response = HttpResponse(my_data, content_type=‘application/vnd.ms-excel’)
response[‘Content-Disposition’] = ‘attachment;filename=“foo.xls”’
HttpResponse的属性
.content bytestring类型
.charset response的编码方式
如何实例化HttpResponse的时候没有指定charset,则使用content_type中的,如果还不行,则使用DEFAULT_CHARSET中的设置。
.status_code
.reason_phrase
.streaming 设置为True时,中间件会区别对待streaming responses和常规的responses
.closed
HttpResponse的方法
.__init__(content=b’’, content_type=None, status=200, reason=None, charset=None)
.__setitem__(header, value) 设置头部信息 key和value都是字符串
.__delitem__(header) 大小写敏感
.__getitem__(header)
.__has_header(header)
.setdafault(header, value) 设置header的默认值
.set_cookie(key, value=‘’, max_age=None, expires=None, path=‘/’, domain=None, secure=None, httponly=False, samesite=None)
max_age是秒;expires如果没有指定的话 会自动计算
.set_sighed_cookied(key, value, salt=‘’, max_age=None, expires=None, path=‘/’, domain=None, secure=None, httponly=False, samesite=None)
HttpResponse子类 用于处理不同类型的http responses
- HttpResponseRedirect
- HttpResponsePermanentRedirect
- HttpResponseNotModified
- HttpResponseBadRequest
- HttpResponseNotFound
- HttpResponseForbidden
- HttpResponseNotAllowed
- HttpResponseGone
- HttpResponseServerError
JsonResponse对象
构造函数
JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs)
StreamingHttpResponse 对象
用于从django向浏览器 stream response
使用场景:当生成response需要长时间或大内存时,可以使用;例如生成一个csv文件
FileResponse 对象
FileResponse(open_file, as_attachment=False, file-name=‘’, **kwargs)