Django的CBV和FBV
一、FBV
FBV(function base views) 就是在视图里使用函数处理请求,也是我们最开始接触和使用的方式,普通项目中最常见的方式。
urls.py
1
2
3
4
|
urlpatterns = [ url(r '^admin/' , admin.site.urls), url(r '^login/$' , account.login), ] |
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# 登录验证 def login(request): message = "" if request.method = = "POST" : user = request.POST.get( 'username' ) pwd = request.POST.get( 'password' ) c = Administrator.objects. filter (username = user, password = pwd).count() if c: request.session[ 'is_login' ] = True request.session[ 'username' ] = user return redirect( '/index.html' ) else : message = "用户名或密码错误" return render(request, 'login.html' , { 'msg' : message}) |
说白了,FBV就是在views.py文件中定义函数来处理用户请求,函数中再定义如果是GET请求怎么处理,POST请求怎么处理,等等!
在普通项目中都会用都FBV,对请求数据的操作都会写在url中,如:127.0.0.1:8000/index/add
二、CBV
CBV(class base views) 就是在视图里使用类处理请求。
urls.py
1
2
3
4
|
urlpatterns = [ url(r '^admin/' , admin.site.urls), url(r '^login/$' , account.Login.as_view()), ] |
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
from django import views from django.utils.decorators import method_decorator class Login(views.View): def get( self , request, * args, * * kwagrs): return render(request, 'login.html' ) def post( self , request, * args, * * kwagrs): user = request.POST.get( 'username' ) pwd = request.POST.get( 'password' ) c = Administrator.objects. filter (username = user, password = pwd).count() if c: request.session[ 'is_login' ] = True request.session[ 'username' ] = user return redirect( '/index.html' ) else : message = "用户名或密码错误" return render(request, 'login.html' , { 'msg' : message}) |
当我们使用CBV方式时,首先要注意urls.py文件中要写成“类名.as_view()”方式映射,其次在类中我们定义的get/post方法这些方法的名字不是我们自己定义的,而是按照固定样式,View类中支持以下方法:
1
|
http_method_names = [ 'get' , 'post' , 'put' , 'patch' , 'delete' , 'head' , 'options' , 'trace' ] |
当我们发送GET请求时,类自动将GET请求转到get方法去处理,其他请求同理!
根据method(请求方式)的不同,对请求数据进行不同的操作
- GET :从服务器取出资源(一项或多项)
- POST :在服务器新建一个资源
- PUT :在服务器更新资源(客户端提供改变后的完整资源)
- PATCH :在服务器更新资源(客户端提供改变的属性)
- DELETE :从服务器删除资源
- ……
在Django Rest Framework框架中用到
Django的CBV和FBV的更多相关文章
- Django之CBV和FBV
Django之CBV和FBV CBV和FBV是C和F的区别: C是Class,F是Function 在请求中,有GET请求和POST请求. 在写CBV时,url是可以对应一个类的,在类中,分别写出GE ...
- django补充CBV和FBV模式
django补充CBV和FBV模式FBV模式---函数:经常用的方式CBV模式---类CBV中url连接时函数名后面要接.as_view()class index(views.View): @... ...
- Django(视图 CBV、FBV)
day67 参考:http://www.cnblogs.com/liwenzhou/articles/8305104.html CBV和FBV 我们之前写过的都是基于函数的view,就叫FBV.还可以 ...
- Django的CBV与FBV
FBV FBV(function base views) 就是在视图里使用函数处理请求. 在之前django的学习中,我们一直使用的是这种方式,所以不再赘述. CBV CBV(class base v ...
- Django的 CBV和FBV
FBV CBV 回顾多重继承和Mixin 回到顶部 FBV FBV(function base views) 就是在视图里使用函数处理请求. 在之前django的学习中,我们一直使用的是这种方式,所以 ...
- django视图 CBV 和 FBV
目录 视图 CBV 和 FBV 什么是视图? FBV function based view 基于函数的视图 CBV class based view 基于类的视图 小技巧 CBV 如何获取页面请求类 ...
- Django之 CBV和FBV
FBV FBV(function base views) 就是在视图里使用函数处理请求. CBV CBV(class base views) 就是在视图里使用类处理请求. Python是一个面向对象的 ...
- python测试开发django-73.django视图 CBV 和 FBV
前言 FBV(function base views) 就是在视图里使用函数处理请求,这一般是学django入门的时候开始使用的方式. CBV(class base views) 就是在视图里使用类处 ...
- django 中CBV和FBV 路由写法的区别
使用视图函数时, FBV: django完成URL解析之后,会直接把request对象以及URL解析器捕获的参数(比如re_path中正则表达捕获的位置参数或关键字参数)丢给视图函数 CBV: 这些参 ...
随机推荐
- MacBook安装Win10
// 这是一篇导入进来的旧博客,可能有时效性问题. (一) 确认你的机型 以下机型支持: ü 安装64 位版本Win10 ü 不使用U盘安装Windows l MacBook(Retina 显 ...
- java基础,集合,Arraylist,源码解析(基础)
ArrayList 是什么,定义? 这是动态的数组,它提供了动态的增加和减少元素,实现了List接口(List实现Collection,所以也实现Collection接口)灵活的设置数组的大小等好处 ...
- UVA 11292 Dragon of Loowater(简单贪心)
Problem C: The Dragon of Loowater Once upon a time, in the Kingdom of Loowater, a minor nuisance tur ...
- 51 nod 1211 数独 DLX
原题链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1211 调了挺久的,自己的一份舞蹈链模板…… 算是在网上见到的模 ...
- [bzoj1811] [Ioi2005]mea
还是比较好想到的..设第一个数为x,那么以后的所有数都能用x和M表示出来. 然后再根据非递减的限制条件得出x的取值范围. #include<cstdio> #include<iost ...
- oracle erp 表结构
BOM模块常用表结构 表名: bom.bom_bill_of_materials 说明: BOM清单父项目 BILL_SEQUENCE_ID NUMBER 清单序号(关键字)ASSEMBLY_ITEM ...
- web 服务器、PHP、数据库、浏览器是如何实现动态网站的
发送请求:浏览器根据用户输入的域名,运用DNS缓存或请求本地DNS服务器解析等获得对应IP地址,使用HTTP协议发送请求报文(含请求内容.浏览器信息.本地缓存.cookie等) 返回数据:web服务器 ...
- POJ 1422 Air Raid
题目链接: http://poj.org/problem?id=1422 Description Consider a town where all the streets are one-way a ...
- ==和equals详解+例子
一开始遇见==和equals我也是分不清,后来看了很多博客,收益匪浅, 担心以后给忘了,所以写下这个,以后复习可以用. (有哪里写得不对的,希望可以留言帮忙改进,大家一起共同进步) 一.Java数据类 ...
- MySQLdb 部署
1.windows 下载后,直接安装即可 http://www.jb51.net/softs/73369.html#download 双击安装 MySQL-python-1.2.3.win32-py2 ...