app开发者平台在数字化时代的重要性与发展趋势解析
808
2022-11-04
24. Django 视图 - HttpResponse、jsonResponse、HttpResponseRedirect
HttpResponse对象
视图在接收请求并处理后,必须返回HttpResponse对象或子对象。在django.value='', max_age=None, expires=None)cookie是网站以键值对格式存储在浏览器中的一段纯文本信息,用于实现用户跟踪。
max_age是一个整数,表示在指定秒数后过期。expires是一个datetime或timedelta对象,会话将在这个指定的日期/时间过期。max_age与expires二选一。如果不指定过期时间,在关闭浏览器时cookie会过期。
delete_cookie(key):删除指定的key的Cookie,如果key不存在则什么也不发生。write:向响应体中写数据。
示例
直接返回数据
1)打开assetinfo/views.py文件,定义视图index2如下:
def index2(request): str = '
2)打开assetinfo/urls.py文件,配置url。
urlpatterns = [ # ex:/assetinfo/index2 path('index2', views.index2), ....]
3)运行服务器,在浏览器中打开如下网址。
django.template import loaderdef index3(request): # 1.获取模板 template = loader.get_template('assetinfo/index3.html') # 2.定义上下文 context = { 'h1': 'Hello world', } # 3.渲染模板 return HttpResponse(template.render(context, request))
2)打开assetinfo/urls.py文件,配置url。
urlpatterns = [ # ex:/assetinfo/index3 path('index3', views.index3), ...]
3)在templates/assetinfo/目录下创建index3.html,代码如下:
4)运行服务器,在浏览器中打开如下网址。
django.shortcuts import renderdef index3(request): context = { 'h1': 'Hello world', } return render(request, 'assetinfo/index3.html', context=context)
子类JsonResponse
在浏览器中使用javascript发起ajax请求时,返回json格式的数据,此处以jquery的get()方法为例。类JsonResponse继承自HttpResponse对象,被定义在django.http模块中,创建对象时接收字典作为参数。
JsonResponse对象的content-type为'application/json'。 ”
示例
1)在assetinfo/views.py文件中定义视图json1、json2,代码如下:
from django.import JsonResponsedef json1(request): return render(request,'assetinfo/json1.html')def json2(request): return JsonResponse({'h1':'hello','h2':'world'})
2)在assetinfo/urls.py文件中配置url。
urlpatterns = [ # ex:/assetinfo/json1 path('json1', views.json1), # ex:/assetinfo/json2 path('json2', views.json2), ....]
3)在templates/assetinfo/目录下创建json1.html,代码如下:
4)运行服务器,在浏览器中输入如下地址。
ajax代码执行过程如下:
1.发起请求。2.服务器端视图函数执行。3.执行回调函数。
子类HttpResponseRedirect
当一个逻辑处理完成后,不需要向客户端呈现数据,而是转回到其它页面,如添加成功、修改成功、删除成功后显示数据列表,而数据的列表视图已经开发完成,此时不需要重新编写列表的代码,而是转到这个视图就可以,此时就需要模拟一个用户请求的效果,从一个视图转到另外一个视图,就称为重定向。
Django中提供了HttpResponseRedirect对象实现重定向功能,这个类继承自HttpResponse,被定义在django.django.import HttpResponseRedirect# 定义重定义向视图,转向刚刚创建的json1页面def red1(request): return HttpResponseRedirect('json1')
2)在asserinfo/urls.py文件中配置url。
urlpatterns = [ # ex:/assetinfo/red1 path('red1', views.red1), ....]
3)访问浏览器测试重定向 访问 20:37:20] "GET /assetinfo/red1 HTTP/1.1" 302 0[17/Jun/2019 20:37:20] "GET /assetinfo/json1 HTTP/1.1" 200 629
可以收到 /assetinfo/red1的路径请求,然后302转发到另一个路径去。
重定向简写函数redirect
在django.shortcuts模块中为重定向类提供了简写函数redirect。
1)修改assetinfo/views.py文件中red1视图,代码如下:
from django.shortcuts import redirect# 定义重定义向视图,转向刚刚创建的json1页面def red1(request): return redirect('/assetinfo/json1')
其实就是封装了一下HttpResponseRedirect对象而已。但是路径转发要加上全路径了,这个要注意一下。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~