Django框架之视图HttpResponse 对象
本篇文章主要内容为:视图中HttpResponse对象的属性、方法及json、redirect子类包含使用cookie使用、跳转、json返回的示例。
概述
HttpResponse对象是对用户访问的响应,与HttpRequest对象由django创建,HttpResponse对象是由开发人员创建。HttpResponse对象属于django.http模块,可以通过向构造函数传递网页内容的方式来构造HttpResponse实例,在实例化的同时可以指定浏览器对文本的处理方式。
用法
属性
Content 表示返回内容的类型
Charset 编码格式
Status_code 响应状态码:200、304、404、500
Content-type 指定输出的mime类型
方法
init 使用页面内容实例化HttpResponse对象
write(content) 以文件的形式写入
flush() 以文件的形式输出
set_cookie(key, val=’’, max_age=None, expire=None)
设置cookie
delete_cookie(key)
删除cookie;注意:如果删除一个不存在的key,什么都没有发生
cookie使用
路由
path(testCookie, views.test_cookie, name=testCookie),
存cookie
def test_cookie(request):
""" cookie测试 """
res = HttpResponse(测试cookie)
res.set_cookie(name, this is cookie)
效果
通过 检查->查看网络 当前链接的响应头,可看到增加了一个cookie。
取cookie
def test_cookie(request):
""" cookie测试 """
res = HttpResponse(测试cookie)
#res.set_cookie(name, this is cookie)
cookies = request.COOKIES
res.write("<h1>" + cookies[name] + "</h1>")
效果
删除cookie
def test_cookie(request):
""" cookie测试 """
res = HttpResponse(测试cookie)
# res.set_cookie(name, this is cookie)
# cookies = request.COOKIES
# res.write("<h1>" + cookies[name] + "</h1>")
res = HttpResponse(删除cookie)
res.delete_cookie(name)
return res
子类HttpResponseRedirect
功能:重定向,服务器端跳转
重定向路由
# 重定向路由 path(redirect1, views.redirect1, name=redirect1), path(redirect2, views.redirect2, name=redirect2),
重定向视图
from django.http import HttpResponseRedirect
def redirect1(request):
return HttpResponseRedirect(/myapp/redirect2)
def redirect2(request):
return HttpResponse(重定向后的视图)
简写redirect(to)
to推荐使用反向解析
from django.http import HttpResponseRedirect
from django.shortcuts import redirect
def redirect1(request):
# return HttpResponseRedirect(/myapp/redirect2)
return redirect(redirect2)
def redirect2(request):
return HttpResponse(重定向后的视图)
子类JsonResponse
返回json数据,一般用于异步请求
__init__(self, data)
Data 字典对象
注意:content-type类型为application/json
引入
from django.http import JsonResponse
使用
def redirect3(request):
if request.is_ajax():
info = JsonResponse({name: 张三, gender: 男, age: 40, hobby: 法律})
return info
else:
return HttpResponse(不是json请求)
