• 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>
     
    总结:
      两种模式都可以使用,没有哪个好和不好的说法,每种模式存在必有一定的道理,根据项目需求选择相应的模式进行开发。
  • 相关阅读:
    算法第五章作业
    算法第四章作业
    算法第四章上机实践报告
    算法第三章作业——动态规划
    算法第三章上机实践报告
    分治法的思想与体会
    算法第二章上机实践报告
    c++代码规范及《数学之美》读后感
    bugkuctf web部分(前8题)解题报告
    第二次博客作业
  • 原文地址:https://www.cnblogs.com/LuckyZLi/p/9758459.html
Copyright © 2020-2023  润新知