博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django基础三之视图函数
阅读量:5315 次
发布时间:2019-06-14

本文共 1644 字,大约阅读时间需要 5 分钟。

一 、定义:

FBV(function base views) 就是在视图里使用函数处理请求。之前都是FBV模式写的代码,所以就不写例子了。

CBV(class base views) 就是在视图里使用类处理请求。

CBV优点:

  1. 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
  2. 可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性

二、使用步骤:

views中:

1、导入:from django.views import view

2、创建新类(继承View类):class LoginView(View):

3、重写dispatch方法:def dispatch (self,request,*args,**kwargs):

4、其中需执行父类的dispactch:ret=super().dispatch(request,*args,**kwargs)

5、最后需返回ret值(get或post的值):return ret (send到浏览器)

urls中:

url(r'^login/', views.LoginView.as_view())

源码:1.as_view()--view    2用户请求到了 view     3view里面执行了dispatch,反射找到请求方法对应的自己视图的方法。

三、装饰器

FBV:

#装饰器def xxx(func1):def inner(request,*args,**kwargs):print('xx1')ret = func1(request,*args,**kwargs)print('xx2')return retreturn inner@xxxdef index(request):pass

CBV:

方式一:

@method_decorator(xxx)
def dispatch(...):....                    放在dispatch上面,相当于装饰了get和post方法。

方式二:

@method_decorator(xxx)
def get(self,request):pass
def post(self,request):pass        只加在get上面,相当于只装饰了get方法。

方式三:

@method_decorator(xxx,name='get')
class IndexView(View):              放在整个类的上面,须有name指示装饰谁,不可连写,装饰几个写几行。

四、request对象

request.body:#得到用户提交数据的原始数据类型 b'username=chao&passowrd=123'request.GETrequest.POSTrequest.method# 获取请求方法。请求中使用的HTTP方法字符串表示,全大写表示request.path_info  #获取用户请求路径,返回用户当前访问的url,不包括域名,不包括参数request.get_full_path() #获取除域名之外的全路径,包括请求参数request.META # 获取请求头的元信息
request方法

五、response对象

HttpResponse('xxx')  #返回一个字符串(封装了 响应头+专程byte类型)render(request,'index.html',{
'name':'chao'}) #相应的html文件中: index.html {
{ name }}--chaoredirect('/login/')# -- 给浏览器发送了一个重定向的请求,浏览器拿到你要重定向的url,然后自动发送了一个ip+端口+路径/login/,的一个请求,后端在配置对应url('^login/',views.login)
三个方法

 

转载于:https://www.cnblogs.com/liangsha0/p/10896749.html

你可能感兴趣的文章
浏览器的判断;
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>
Leetcode 589. N-ary Tree Preorder Traversal
查看>>
机器学习/深度学习/其他开发环境搭建记录
查看>>
xml.exist() 实例演示
查看>>
判断是否为空然后赋值
查看>>
zabbix监控日志文件
查看>>
正则表达式
查看>>
pip install torch on windows, and the 'from torch._C import * ImportError: DLL load failed:' s...
查看>>
java基础(一):我对java的三个环境变量的简单理解和配置
查看>>
arcgis api 4.x for js 结合 Echarts4 实现散点图效果(附源码下载)
查看>>
YTU 2625: B 构造函数和析构函数
查看>>
apache自带压力测试工具ab的使用及解析
查看>>
C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码
查看>>
jenkins搭建
查看>>
C#中使用Split分隔字符串的技巧
查看>>
eclipse的调试方法的简单介绍
查看>>
加固linux
查看>>
IPSP问题
查看>>
10.17动手动脑
查看>>