原文链接:https://www.cnblogs.com/weiman3389/p/6896624.html
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 ,类中函数名必须小写。
两种方式没有优劣,都可以使用。