62.Django05——视图层
Posted heirenxilou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了62.Django05——视图层相关的知识,希望对你有一定的参考价值。
一、视图函数
视图函数,属于Django的视图层,也就是我们之前将的Django生命周期中定义在views.py里的函数,是用来处理web请求信息以及返回响应信息的函数。视图函数只需要熟练掌握两个对象:请求对象HttpRequest和响应对象HttpResponse
二、三板斧
HttpResponse对象的响应可以是任何形式的内容,尅是一个html文件的内容,一个重定向等等。显影对象主要有三种形式,就是我们说的三板斧HttpResponse,render,redirect
1.HttpResponse()
括号里直接返回一个字符串。
2.render()
render(request, template_name[, context])
参数:
1、request:用于生成响应的请求对象,固定必须传入的第一个参数
2、template_name:要使用的模板的完整名称,必须传入,render默认会去templates目录下查找模板文件
3、context:可选参数,可以传入一个字典用来替换模块文件中的变量
综上,render的功能可以总结为:根据给定字典渲染模板文件,并返回一个渲染后的 HttpResponse对象。
3.redirect()
返回重定向信息
def my_view(request): ... return redirect(‘/some/url/‘)
重定向的地址也可以是一个完整的URL:
def my_view(request): ... return redirect(‘http://www.baidu.com/‘)
三、JsonResponse
要想跨语言操作,前后端数据交互需要使用到json作为过渡 实现跨语言传输数据
在不用JsonResponse的情况下怎么返回json序列化的数据呢
先转成json格式字符串 # json_str = json.dumps(user_dict,ensure_ascii=False) # 将该字符串返回 # return HttpResponse(json_str)
我们在用JsonResponse来改写上面这两句
return JsonResponse(user_dict,json_dumps_params={‘ensure_ascii‘:False})
可以发现
Django中JsonResponse其实就是结合了python中json序列化和HttpResponse两步,并增加新的功能
具体地向前端返回一个json格式字符串有两种方法
第一种
import json def my_view(request): data=[‘egon‘,‘kevin‘] return HttpResponse(json.dumps(data) )
第二种
from django.http import JsonResponse def my_view(request): data=[‘egon‘,‘kevin‘] return JsonResponse(data,safe=False) #默认safe=True代表只能序列化字典对象,safe=False代表可以序列化字典以外的对象
四、FBV与CBV
django的视图层由两种形式构成:FBV和CBV
我们之前介绍的一直都是FBV
FBV(Function base view):基于函数的视图
CBV(Class base view):基于类的视图
# CBV路由 url(r‘^login/‘,views.MyLogin.as_view()) from django.views import View class MyLogin(View): def get(self,request): return render(request,‘form.html‘) def post(self,request): return HttpResponse(‘post方法‘)
以上是关于62.Django05——视图层的主要内容,如果未能解决你的问题,请参考以下文章