[Django2.2文档阅读]HttpResponse

HttpResponse对象:

HttpRequest对象由Django自动创建,而HttpResponse则是由用户创建。每一个视图都应该生成,填充,并返回一个HttpResponse。

用法:

传递字符串:

最基础的用法,将字符串返回到页面上。

return HttpResponse("OK")

# Content-Type: text/html

设置首部、方法:

response = HttpResponse()
response['Age'] = 120  # 设置首部
response.set_cookie('username', user.username, max_age=3600 * 24 * 15)  # 将用户的用户名的cookie保存15天
response.delete_cookie('username')

常用子类:

  1. HttpResponseRedirectHttpResponsePermanentRedirect

    分别返回状态码302、301,常见用于redirect中。

    def redirect(to, *args, permanent=False, **kwargs):
        redirect_class = HttpResponsePermanentRedirect if permanent else HttpResponseRedirect
        return redirect_class(resolve_url(to, *args, **kwargs))
    
  2. HttpResponseForbidden返回状态码403


JsonResponse:

class JsonResponse (data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, kwargs)

用来创建JSON格式的相应,与HttpResponse有一些改动。

  1. 将Content-Type改为application/json

    kwargs.setdefault('content_type', 'application/json')  # 源码
    
  2. 核心是将data转为json

    data = json.dumps(data, cls=encoder, **json_dumps_params)  # 源码
    

    # encoder默认是DjangoJSONEncoder,用来序列化数据。

posted @ 2021-01-20 20:38  macguz  阅读(95)  评论(0编辑  收藏  举报