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(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 ,类中函数名必须小写。
另外CBA中,前端的请求是get就使用函数get中的方法,前端的请求是post就使用函数post中的方法。