• django中的FBV和CBV


     

     

                      django中请求处理方式有2种:FBV 和 CBV

    一、FBV

    FBV(function base views) 就是在视图里使用函数处理请求。

    看代码:

    urls.py

    1
    2
    3
    4
    5
    6
    7
    8
    from django.conf.urls import url, include
    # from django.contrib import admin
    from mytest import views
     
    urlpatterns = [
        # url(r‘^admin/‘, admin.site.urls),
        url(r‘^index/‘, views.index),
    ]

    views.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    from django.shortcuts import render
     
     
    def index(req):
        if req.method == ‘POST‘:
            print(‘method is :‘ + req.method)
        elif req.method == ‘GET‘:
            print(‘method is :‘ + req.method)
        return render(req, ‘index.html‘)

    注意此处定义的是函数【def index(req):】

    index.html

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>index</title>
    </head>
    <body>
        <form action="" method="post">
            <input type="text" name="A" />
            <input type="submit" name="b" value="提交" />
        </form>
    </body>
    </html>

    上面就是FBV的使用。

    二、CBV

    CBV(class base views) 就是在视图里使用类处理请求。

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

    1
    2
    3
    4
    5
    6
    from mytest import views
     
    urlpatterns = [
        # url(r‘^index/‘, views.index),
        url(r‘^index/‘, views.Index.as_view()),
    ]

    注:url(r‘^index/‘, views.Index.as_view()),  是固定用法。

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from django.views import View
     
     
    class Index(View):
        def get(self, req):
            print(‘method is :‘ + req.method)
            return render(req, ‘index.html‘)
     
        def post(self, req):
            print(‘method is :‘ + req.method)
            return render(req, ‘index.html‘)

    注:类要继承 View ,类中函数名必须小写。

    两种方式没有优劣,都可以使用。

  • 相关阅读:
    【BZOJ 4151 The Cave】
    【POJ 3080 Blue Jeans】
    【ZBH选讲·树变环】
    【ZBH选讲·拍照】
    【ZBH选讲·模数和】
    【CF Edu 28 C. Four Segments】
    【CF Edu 28 A. Curriculum Vitae】
    【CF Edu 28 B. Math Show】
    【CF Round 439 E. The Untended Antiquity】
    【CF Round 439 C. The Intriguing Obsession】
  • 原文地址:https://www.cnblogs.com/xc1234/p/9152075.html
Copyright © 2020-2023  润新知