django CBV和FBV写法总结

本文深入探讨了Django框架中函数式视图(FBV)与类视图(CBV)的区别与联系,详细讲解了CBV的配置方法及其实现过程,包括URL配置、请求处理流程及dispatch方法的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、FBV

  function base views 平常我们的写法,一个URL对应一个视图函数

二、CBV

  1、url 配置

 path('test/',views.CBVTest.as_views())

     2、from  django.views import View

    前台发过来的get请求,就会相应get方法,post就会相应post方法,get方法和post方法里面跟FBV一样

 1 class CBVTest(View):
 2     def get(self,request):
 3         print(request.method)
 4         return render(request,'test.html')
 5     def post(self,request):
 6         name = request.get('name')
 7         print(name)
 8         pwd = request.get('pwd')
 9         if name == 'wudi' and pwd == '123':
10             return HttpResponse('登陆成功')
11         else:
12             return render(request,'test.html')

 

三、dispatch的使用

  dispatch,相当于重写父类的用法,不加入dispatch则直接走父类的,写了则走自己写的类

class Test(View):
    def dispatch(self,request,*args,**kwargs):
        print('111')
        #或者加入对访问频率过多的IP进行限制过滤,对未登录的用户限制
        obj = super().dispatch(request,*args,**kwargs)
        print('222')
        #obj.set_cookie
        return obj

    def get(self,request):
    print('333') print(request.method)
return render(request,'test.html') def post(self,request): name = request.get('name') print(name) pwd = request.get('pwd') if name == 'wudi' and pwd == '123': return HttpResponse('登陆成功') else: return render(request,'test.html')

结果:

  111

  333

  222

    

CBVTest

转载于:https://www.cnblogs.com/di2wu/p/10062016.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值