Django中的FBV和CBV

1.  CBV(class base views)(相对来说操作更加灵活,功能更加丰富)

CBV是采用面向对象的方法写视图文件。

CBV的执行流程:

浏览器向服务器端发送请求,服务器端的urls.py根据请求匹配url,找到要执行的视图类,执行dispatch方法区分出是POST请求还是GET请求,执行views.py对应类中的POST方法或GET方法。

使用实例:

将上述代码中的 urls.py 修改为如下:

  from mytest import views

  path('home/',views.Home.as_view())  #这是固定写法

views.py 的代码如下:

 from django.views import View

class Home(View):
  # 相当于一个装饰器功能,即在进行post/get请求的时候可以附加一些操作(重写dispatch方法)
  def dispatch(self, request, *args, **kwargs):
    print('Before')
    result = super(Home, self).dispatch(request, *args, **kwargs) # 调用父类的dispatch方法
    print('After')
    return result

  def get(self, request):
    print(request.method)
    return render(request, 'home.html')
  def post(self, request):
    print(request.method)
    return render(request, 'home.html')

2.  FBV(function  base views)

 FBV即在views.py中以函数的形式写视图。

 使用实例:

将上述代码中的 urls.py 修改为如下:

  from mytest import views

  path('login/',views.login)  

views.py 的代码如下:

 def login(request):

if request.method == 'GET':

  pass
  return render(request, 'login.html')
elif request.method == 'POST':
  pass

  return redirect('/index/')
else:
  #PUT, DELETE, HEAD, OPTIONS

  pass
  return redirect('/index/')

 

login.html代码如下 :

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>index</title>
</head>
<body>
 <form action="/login/" method="post">
 <input type="text" name="A" />
 <input type="submit" name="b" value="提交" />
 </form>
</body>
</html>
 
总结:
  两种模式都可以使用,没有哪个好和不好的说法,每种模式存在必有一定的道理,根据项目需求选择相应的模式进行开发。

转载于:https://www.cnblogs.com/LuckyZLi/p/9758459.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值