本篇文章主要内容为:视图中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请求')