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 adminfrom mytest import viewsurlpatterns = [    # 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 renderdef 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 viewsurlpatterns = [    # 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 Viewclass 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 ,类中函数名必须小写。
两种方式没有优劣,都可以使用。
                    
                
                
            
        
浙公网安备 33010602011771号