django HttpResponse分析

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)

推荐阅读更多精彩内容