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 ,类中函数名必须小写。
两种方式没有优劣,都可以使用。
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 ,类中函数名必须小写。
两种方式没有优劣,都可以使用。