Django视图函数之FBV与CBV模式

FBV模式:

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

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

veiws.py

 1 from django.shortcuts import render,HttpResponse
 2 # Create your views here.
 3
 4 def login(request):
 5     if request.method=="GET":
 6         return render(request,"login.html")
 7     elif request.method=="POST":
 8         if request.POST.get("username")=="yang" and request.POST.get("userpsd")=="123":
 9             return render(request,"login_success.html",{"name":request.POST.get("username")})
10         else:
11             return  HttpResponse("账号或密码有误!")

      urls.py

1 from django.conf.urls import url
2 from django.contrib import admin
3 from app01 import views
4
5 urlpatterns = [
6     # url(r‘^admin/‘, admin.site.urls),
7     url(r‘^login‘, views.login),
8 ]

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

  

 1 from django.shortcuts import render,HttpResponse
 2 from django.views import View
 3
 4 class Myview(View):
 5
 6     # 可以对父类的dispatch方法重,在分发函数执行前后加上响应功能类比装饰器
 7     # def dispatch(self, request, *args, **kwargs):
 8     #     ret=super().dispatch(request, *args, **kwargs)
 9     #     return ret
10
11     def get(self, request):
12         return render(request, "login.html")
13
14     def post(self, request):
15         if request.method == "GET":
16             return render(request, "login.html")
17         elif request.method == "POST":
18             if request.POST.get("username") == "yang" and request.POST.get("userpsd") == "123":
19                 return render(request, "login_success.html", {"name": request.POST.get("username")})
20             else:
21                 return HttpResponse("账号或密码有误!")

     urls.py

1 from django.conf.urls import url
2 from django.contrib import admin
3 from app01 import views
4
5 urlpatterns = [
6     # url(r‘^admin/‘, admin.site.urls),
7     url(r‘^login‘, views.Myview.as_view()),
8 ]

原文地址:https://www.cnblogs.com/open-yang/p/11221383.html

时间: 2024-12-10 09:51:33

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

django RESTful研究一第一个测试例子(用序列化器编写原生的Django视图函数)

让我们看看通过 Serializer 类怎样来编写 API 的视图函数,现在我们不会使用 REST 框架中的特性,仅仅写原生的Django视图函数. 一.我们创建一个 HttpResponse 的子类,用来将任何数据转换成 JSON格式. 编辑snippets/views.py,如下: from django.http import HttpResponse from django.views.decorators.csrf import csrf_exempt from rest_framew

Django之FBV和CBV模式

FBV就是 url路由>>>业务处理函数的方式,CBV就是url路由>>>类 的处理业务方式. 最常用的就是FBV模式,就不用过多赘述,直接上CBV的实用代码. 1.CBV的url路由该怎么写? 1 from django.contrib import admin 2 from django.urls import path 3 from django.conf.urls import url 4 from app01 import views 5 6 urlpatte

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

视图函数响应处理: from django.shortcuts import render,HttpResponse,redirect (1)render 处理模板文件,可以渲染模板,第一个参数必须为封装好的元请求数据request return  render(request,"index.html",{"name":"zhang"}) (2)HttpResponse  处理字符串数据,可以是带标签的字符串 return HttpRequest

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

FBV模式装饰器: 普通函数的装饰器(语法糖@) views.py 1 from django.shortcuts import render 2 3 def wrapper(f): 4 def inner(*args,**kwargs): 5 print("before") 6 ret=f(*args,**kwargs) 7 print("after") 8 return ret 9 return inner 10 11 @wrapper 12 def index

Python 第五十七章 Django 视图函数

视图 HTTPRequest对象就是咱们的视图函数的参数request # print(request) #<WSGIRequest: GET '/home/'> # # print(dir(request)) # # print(request.path) #/home/ 纯路径 # print(request.path_info) #/home/ 纯路径 # print(request.get_full_path()) #/home/?a=1&b=2 全路径(不包含ip地址和端口)

Django视图函数的使用

1.使用 (1)定义视图函数request 参数必须有.是一个HttpRequest类型的对象.参数名可以变化,但不要更改. (2)配置url 建立url和视图函数之间的对应关系 2.url配置的过程 (1)在项目的urls文件中包含具体应用的urls文件,在具体应用的urls文件中包含具体url和视图的对应关系. (2)url配置项是定义在一个名叫urlpatterns的列表中,其中的每一个元素就是一个配置项,每一个配置项都调用url函数. 回顾案例:test3 (1)进入虚拟环境, 创建项目

Django视图函数

一.视图函数 1. 视图函数的第一个参数一定是一个HTTPRequest类型的对象,这个对象是Django自动创建的,具体形参名通常用request.通过这个对象,可以调用请求的一些参数,比如request.path,request.method,request.META去查看请求信息. 2. 视图函数必须返回一个HTTPResponse类型的对象,这个对象必须是人工创建的.

Django视图函数之request请求与response响应对象

官方文档: https://docs.djangoproject.com/en/1.11/ref/request-response/ 视图中的request请求对象: 当请求页面时,Django创建一个HttpRequest包含有关请求的元数据的对象. 常用的值和操作: ·         request.method      #获取请求属性 ·         request.GET         #获取GET请求的参数字典信息,用.get()取值 ·         request.PO

Django之请求生命周期及FBV/CBV模式

一.Http请求的过程1.http的请求/响应模式,先是用户通过前端页面发送一个http请求,请求内容包括三部分:请求头/空行/请求体(get方法没有请求体)例如:抓包如下:2.服务端就收到http的请求内容的字符串后,进行解析出相应的请求头(method /url/cookie等信息 )和请求体内容,并将请求体的内容转换成对应的key-value格式.3.服务端再通过url去匹配对应的URL路由(匹配规则是从上向下进行正则匹配,若匹配成功则停止不再向下匹配),匹配成功后找到views中对应的函