这里写目录标题
我们编写的每个视图都有实例化, 填充和返回一个HttpResponse对象. 就是函数的return值
使用方法
- 返回一个字符串
>>> from django.http import HttpResponse
>>> response - HttpResponse("zifuchuan")
- 传递可迭代对象
- 传递附件, 需要声明content_type类型和设置Content-Disposition头信息
- 比如给浏览器返回一个微软电子表格
>>> response = HttpResponse(my_date, content_type='application/vnd.ms-excel')
>>> response['Content-Dispositon'] = 'attachment; filename="foo.xls"'
属性
- content : 响应的内容
- charset : 编码的字符集
- status_code : 响应的状态码
方法
has_header(header)
检查头部中是否有给定的名称
setdefault(header, value)
设置一个头部
set_cookie()
设置一个Cookie
- max_age : 生成周期. 以秒为单位
- expires : 到期时间
- domain : 用于设置跨域的Cookie.
- secure = True : 支持https
- httponly = True : 阻止客户端的js代码访问cookie
HttpResonse的子类
- class HttpResponseRedirect:重定向,返回302状态码。已经被redirect()替代。
- class HttpResponsePermanentRedirect:永久重定向,返回301状态码。
- class HttpResponseNotModified:未修改的页面,返回304状态码。
- class HttpResponseBadRequest:错误的请求,返回400状态码。
- class HttpResponseNotFound:页面不存在,返回404状态码。
- class HttpResponseForbidden:禁止访问,返回403状态码。
- class HttpResponseNotAllowed:禁止访问,返回405状态码。
- class HttpResponseGone:过期,返回405状态码。
- class HttpResponseServerError:服务器错误,返回500状态码。
还可以自定义HttpResponse的子类
from http import HTTPStatus
from django.http import HttpResponse
class HttpResponseNoContent(HttpResponse):
status_code = HTTPStatus.NO_CONTENT
JsonResponse类
class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs)
- 它的Content-Type头部为
application/json
- 它的第一个参数data, 应该为一个字典数据类型
- 只有将safe参数设置为False, 才可以将任何可JSON序列化的对象作为data的参数值.
具体的用法
from django.http import HttpResponse,JsonResponse
def jsonresponse_view(request):
persion = {
'username':'ziliao',
'age':18,
'height':180
}
response = JsonResponse(persion)
return response
StreamingHttpResponse类
StreamingHttpResponse类被用来从Django响应一个流式对象到浏览器
FileResponse类
class FileResponse(open_file, as_attachment=False, filename='', **kwargs)
FileResponse需要通过二进制模式打开文件
>>> from django.http import FileResponse
>>> response = FileResponse(open('myimg.png', 'rb'))