django 中基于类的视图

django 视图 分为两种

  1.  FBV  基于函数的视图      function   based  view  

  2.  CBV  基于类的视图         class   based   view   

 

基于类的视图   

CBV :基于 类的视图函数

1、后端逻辑处理时不用通过逻辑,来判断请求方式是get还是post请求
在视图类中,定义了get方法就是写get请求的逻辑,定义类post方法时
就是post请求逻辑。

2、View 的源码分析过程
1.先从url.py 文件的开始分析入手:
 1 from app01 import views
 2 
 3         urlpatterns = [
 4             path('admin/', admin.site.urls),
 5 
 6             path('login/', views.LoginView.as_view()),  # CBV 基于类的视图
 7             path('index/', views.index),  # FBV 基于函数的视图
 8         ]
 9 
10         1. #views.LoginView.as_view() 必须是一个视图函数

2. 点击进入源码
View 大致执行流程:
self.as_view() =====> self.dispatch() ====> self.get/post/等
# 路由分发开始 获取具体的请求方面名,在通过反射具体的请求函数 视图函数
 1 class  View:
 2 
 3             http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
 4 
 5 
 6             def as_view(cls, **initkwargs):
 7 
 8                 def view(request, *args, **kwargs):
 9 
10 
11                     return self.dispatch(request, *args, **kwargs)
           return view
12 13 14 def dispatch(self, request, *args, **kwargs): 15 16 # self.http_method_names=['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace'] 17 18 if request.method.lower() in self.http_method_names: 19 # 用反射 获取函数 request.method.lower() # 为 get 20 handler = getattr(self, request.method.lower(), self.http_method_not_allowed) 21 # hander=getattr(self,"get") # 相当于执行了 该类下的get方法 22 else: 23 handler = self.http_method_not_allowed 24 25 #handler(request, *args, **kwargs) ====> get(request,*args, **kwargs) 26 27 return handler(request, *args, **kwargs) # 相当于类下的 执行 return self.get(request,)

3. 在view.py 文件中:
      
 1 from django.view import View
 2 
 3         # CBV 基于类的视图
 4         class LoginView(View):
 5 
 6             def get(self,request,*args, **kwargs):
 7                 
 8 
 9                 return render(request,"login.html")
10 
11             def post(self,request,*args, **kwargs):
12 
13                 return redirect('/index/')
14 
15 
16         # FBV 基于函数的视图
17         def  index(request):
18 
19             return render(request,"index.html")



转载于:https://www.cnblogs.com/knighterrant/p/10503645.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值