Django - 视图层 - HttpResponse


我们编写的每个视图都有实例化, 填充和返回一个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'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值