Django中的CBV和FBV示例介绍


Posted in Python onFebruary 25, 2018

前言

本文主要给大家介绍了关于Django中CBV和FBV的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

一、  CBV

CBV是采用面向对象的方法写视图文件。

CBV的执行流程:

浏览器向服务器端发送请求,服务器端的urls.py根据请求匹配url,找到要执行的视图类,执行dispatch方法区分出是POST请求还是GET请求,执行views.py对应类中的POST方法或GET方法。

使用实例:

urls.py

path('login/',views.Login.as_view())

views.py

from django import views #在views.py的基础上添加
class Login(views.Views):
 def get(self,request)
  pass
  def pass(self,request)
  pass

使用装饰器:

from django import views
from django.utils.decorators import method_decorator
def outer(func):
 def inner(request,*args,**kwargs):
 return func(request,*args,**kwargs)
 return inner
class Login(views.View):
 @method_decorator(outer)
 def get(self,request,*args,**kwargs):
 pass

在类上面加装饰器,和在函数上加装饰器是一个性质。但加的方法有所不同。

eg:

@method_decorator(outer,name='dispatch')
class Login(views.View):

自定义dispatch:

class Login(views.View):
 def dispatch(self, request, *args, **kwargs):
 print(2222)
 ret = super(Login, self).dispatch(request, *args, **kwargs)
 print(1111)
 return ret
def get(self, request, *args, **kwargs):
  print('GET')
  return HttpResponse('OK')

执行结果:2222

GET
  1111

二、    FBV

FBV即在views.py中以函数的形式写视图。

看代码:

urls.py

from django.conf.urls import url, include
# from django.contrib import admin
from mytest import views
 
urlpatterns = [
 # url(r‘^admin/‘, admin.site.urls),
 url(r‘^index/‘, views.index),
]

views.py

from django.shortcuts import render
def index(req):
 if req.method == ‘POST‘:
 print(‘method is :‘ + req.method)
 elif req.method == ‘GET‘:
 print(‘method is :‘ + req.method)
 return render(req, ‘index.html‘)

注意此处定义的是函数【def index(req):】

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>index</title>
</head>
<body>
 <form action="" method="post">
 <input type="text" name="A" />
 <input type="submit" name="b" value="提交" />
 </form>
</body>
</html>

上面就是FBV的使用。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python操作MySQL数据库9个实用实例
Dec 11 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
May 28 Python
Python 闭包的使用方法
Sep 07 Python
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
Python数据持久化shelve模块用法分析
Jun 29 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
python 实现兔子生兔子示例
Nov 21 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
浅谈Python访问MySQL的正确姿势
Jan 07 Python
pytorch简介
Nov 11 Python
Spy++的使用方法及下载教程
Jan 29 Python
django上传文件的三种方式
Apr 29 Python
python中正则表达式的使用方法
Feb 25 #Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 #Python
python正则表达式爬取猫眼电影top100
Feb 24 #Python
python爬虫获取淘宝天猫商品详细参数
Jun 23 #Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 #Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 #Python
Python 中Pickle库的使用详解
Feb 24 #Python
You might like
php htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
php引用和拷贝的区别知识点总结
2019/09/23 PHP
Jquery cookie操作代码
2010/03/14 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
JavaScript实现简单的数字倒计时
2015/05/15 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
Python实现爬取逐浪小说的方法
2015/07/07 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
2018/05/18 Python
python文本数据处理学习笔记详解
2019/06/17 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
《美丽的田园》教学反思
2014/03/01 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
项目合作意向书
2015/05/08 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
Python标准库pathlib操作目录和文件
2021/11/20 Python
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
2022/04/12 PostgreSQL