zoukankan      html  css  js  c++  java
  • 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的数组简单的模拟了入栈
    c++实验,需要的人都知道是啥
    c语言的一个简单的链表
    c++的引用
    c++的一个有趣的程序
    奥运五环的绘制
    网页中的事件与事件响应
    响应事件的示例
    关于window.onload,window.onbeforeload与window.onunload
  • 原文地址:https://www.cnblogs.com/LuckyZLi/p/9758459.html
Copyright © 2011-2022 走看看