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')
常用子类:
-
HttpResponseRedirect
、HttpResponsePermanentRedirect
分别返回状态码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))
-
HttpResponseForbidden
返回状态码403
JsonResponse:
class JsonResponse (data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, kwargs)
用来创建JSON格式的相应,与HttpResponse有一些改动。
-
将Content-Type改为application/json
kwargs.setdefault('content_type', 'application/json') # 源码
-
核心是将data转为json
data = json.dumps(data, cls=encoder, **json_dumps_params) # 源码
# encoder默认是DjangoJSONEncoder,用来序列化数据。