FBV模式:

FBV(function base views) 就是在视图里使用函数处理请求。

一般直接用函数写的都属于是FBV模式。

veiws.py

 from django.shortcuts import render,HttpResponse
# Create your views here. def login(request):
if request.method=="GET":
return render(request,"login.html")
elif request.method=="POST":
if request.POST.get("username")=="yang" and request.POST.get("userpsd")=="":
return render(request,"login_success.html",{"name":request.POST.get("username")})
else:
return HttpResponse("账号或密码有误!")

      urls.py

 from django.conf.urls import url
from django.contrib import admin
from app01 import views urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^login', views.login),
]

CBV模式:

CBVclass base views 就是在视图里使用类处理请求。

1.    自定义的类必须继承View父类

2.    提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)

3.    可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性

4.    CBV模式继承的View类提供了多种请求方式对应的响应函数不需要在进行判断,可以直接在子类重写继承的方法

5.    CBV模式子类继承重写父类请求方式的响应函数通过父类dispatch方法进行反射分发

6.    在urls.py路由系统中必须使用Myview.as_view()替代视图函数

     veiws.py

  

 from django.shortcuts import render,HttpResponse
from django.views import View class Myview(View): # 可以对父类的dispatch方法重,在分发函数执行前后加上响应功能类比装饰器
# def dispatch(self, request, *args, **kwargs):
# ret=super().dispatch(request, *args, **kwargs)
# return ret def get(self, request):
return render(request, "login.html") def post(self, request):
if request.method == "GET":
return render(request, "login.html")
elif request.method == "POST":
if request.POST.get("username") == "yang" and request.POST.get("userpsd") == "":
return render(request, "login_success.html", {"name": request.POST.get("username")})
else:
return HttpResponse("账号或密码有误!")

     urls.py

 from django.conf.urls import url
from django.contrib import admin
from app01 import views urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^login', views.Myview.as_view()),
]

Django视图函数之FBV与CBV模式的更多相关文章

  1. django中视图函数的FBV和CBV

    1.什么是FBV和CBV FBV是指视图函数以普通函数的形式:CBV是指视图函数以类的方式. 2.普通FBV形式 def index(request): return HttpResponse('in ...

  2. Django视图函数之三种响应模式

    视图函数响应处理: from django.shortcuts import render,HttpResponse,redirect (1)render 处理模板文件,可以渲染模板,第一个参数必须为 ...

  3. Django生命周期,FBV,CBV

    一. Django生命周期 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串,在Django中,当我们访问一个的url时,会通过路由匹配进入相应的html网页中.Django的请求生命周 ...

  4. Django视图函数函数之视图装饰器

    FBV模式装饰器: 普通函数的装饰器(语法糖@) views.py from django.shortcuts import render def wrapper(f): def inner(*arg ...

  5. django请求生命周期,FBV和CBV,ORM拾遗,Git

    一.django 请求生命周期 流程图: 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post, ...

  6. python 全栈开发,Day84(django请求生命周期,FBV和CBV,ORM拾遗,Git)

    一.django 请求生命周期 流程图: 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post, ...

  7. Django - 自定义分页、FBV和CBV

    一.自定义分页(优势在于能够保存搜索条件) """ 分页组件使用示例: 1) 先取出所有数据USER_LIST 2) 实例化: obj = Pagination(requ ...

  8. Django【进阶】FBV 和 CBV

    django中请求处理方式有2种:FBV 和 CBV 一.FBV FBV(function base views) 就是在视图里使用函数处理请求. 看代码: urls.py 1 2 3 4 5 6 7 ...

  9. 【6】Django视图函数

    治大国若烹小鲜.以道莅天下 --老子<道德经> 本节内容 Django web项目的运行流程分析 视图处理函数的定义 多视图处理函数及接收参数 1. web项目运行流程分析 通常情况下,完 ...

随机推荐

  1. python25之进制转换

    一.进制转换函数 bin():将十进制转换为二进制 oct():将十进制转换为八进制 hex():将十进制转换为十六进制 >>> x=1234>>> bin(x)' ...

  2. 如何在 Windows Event Log 中查找系统重启的信息

    事件ID:12 事件ID 13: 事件ID 41: 事件ID 6008: 事件ID 1074:事件ID 1074: ========================================== ...

  3. 同步类的基础AbstractQueuedSynchronizer(AQS)

    同步类的基础AbstractQueuedSynchronizer(AQS) 我们之前介绍了很多同步类,比如ReentrantLock,Semaphore, CountDownLatch, Reentr ...

  4. centos7安装及部署zabbix监控

    一:实验环境 server.zabbix.com-------------------- 192.168.200.11 agent.zabbix.com------------------------ ...

  5. Memo-Tech

    Qt install Qt on Ubuntu Download *.run file; Click downloaded file to install. Note that gcc module ...

  6. 推荐3个Python初学者学习Python案例

    回复资料,获取最新的Python的资料.想学习Python可以加微信回复报名. 希望今天的分享3个小案例,对你学习Python有帮助 Python 九九乘法表 以下实例演示了如何实现九九乘法表: 实例 ...

  7. JavaScript实现折半查找(二分查找)

    一.问题描述: 在一个升序数组中,使用折半查找得到要查询的值的索引位置.如: var a=[1,2,3,4,5,6,7,8,9]; search(a,3);//返回2 search(a,1);//左边 ...

  8. 基于UDP的客户端和服务器端的代码设计

    实验平台 linux 实验内容 编写UDP服务器和客户端程序,客户端发送消息,服务器接收消息,并打印客户端的IP地址和端口号. 实验原理 UDP是无需连接的通信,其主要实现过程如下: 同样,我们可以按 ...

  9. vue后台管理系统介绍

    项目GitHub地址:https://github.com/Little-Orange7/cmms-vue 一.简介 很多公司稍微复杂一点的业务,基本上都需要后台管理系统,来对业务进行各个维度的统计. ...

  10. Java笔记(day23-day26)

     IO流1,复制一个文本文件. 1,明确体系:        源:InputStream ,Reader        目的:OutputStream ,Writer    2,明确数据:       ...