django中请求处理方式有2种:FBV 和 CBV
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 ,类中函数名必须小写。
两种方式没有优劣,都可以使用。
原文:https://www.cnblogs.com/ExMan/p/9869998.html