博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django基础之CBV和FBV
阅读量:6364 次
发布时间:2019-06-23

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

我们之前写过的是基于函数的view,就叫FBV。还可以把view写成基于类的。

1. FBV版

def add_class(request):    if request.method == "POST":        class_name = request.POST.get("class_name")        models.Classes.objects.create(name=class_name)        return redirect("/class/")    return render(request, "add_class.html")

2. CBV版

基于反射,实现根据请求方式不同,执行不同的方法。

原理:
(1)路由:url---> view函数---->dispatch方法(根据反射执行其他method方法)

from django.views import Viewfrom django.shortcuts import render, HttpResponse, redirectclass AddName(View):    def get(self, request):        return render(request, "add_class.html")    def post(self, request):        class_name = request.POST.get("class_name")        models.Classes.objects.create(name=class_name)        return redirect("/class/")

使用CBV时要注意,请求过来后会先执行dispatch()这个方法,如果需要批量对具体的请求处理方法,如get,post等再做一些操作的时候,这里我们可以手动改写dispatch方法,这个dispatch方法就和在FBV上加装饰器的效果一样。

from django.vies import Viewfrom django.shortcuts import render, HttpResponse, redirectclass Login(View):    def dispatch(self, request, *args, **kwargs):        print("before")        obj = super(Login, self).dispatch(request, *args, **kwargs)        print("after")        return obj    def get(self, request):        return render(request, "login.html")    def post(self, request):        print(request.POST.get("user"))        return HttpResponse("Login.post")

注意,在使用CBV时,urls.py中也做对应的修改。

url(r"^add_class/$", views.AddClass.as_view())

转载于:https://www.cnblogs.com/yang-wei/p/9997671.html

你可能感兴趣的文章
虎牙直播在微服务改造方面的实践和总结
查看>>
怎样将优酷网站下载的视频KUX转MP4格式
查看>>
MongoDB 分组统计
查看>>
二进制状态码
查看>>
Vue 中 CSS 动画原理
查看>>
关于 Promise 的 9 个提示
查看>>
算法复习
查看>>
安卓中高级开发面试知识点之——缓存
查看>>
Java的初始化顺序
查看>>
js 判断回文字符串
查看>>
shields小徽章是如何生成的?以及搭建自己的shield服务器
查看>>
猫头鹰的深夜翻译:spring事务管理
查看>>
记一次使用Spring REST Docs + travis + github自动生成API接口文档的操作步骤(下)...
查看>>
1、集合 2、Iterator迭代器 3、增强for循环 4、泛型
查看>>
关于/var/run/docker.sock
查看>>
SCrapy爬虫大战京东商城
查看>>
用 JavaScript 实现链表操作 - 11 Alternating Split
查看>>
Laravel优秀扩展包整理
查看>>
日志分析之识别真假蜘蛛与处理办法
查看>>
回顾小程序2018年三足鼎立历程,2019年BAT火力全开
查看>>