Django中的FBV和CBV

FBV

FBV(function base views) 就是在视图里使用函数处理请求。

看代码:

urls.py

1
2
3
4
5
6
from django.urls import path, include
from mytest import views

urlpatterns = [
path('index/', views.index),
]

views.py

1
2
3
4
5
6
7
8
from django.shortcuts import render

def index(request):
if request.method == 'POST':
print('method is :' + request.method)
elif request.method == 'GET':
print('method is :' + request.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>

CBV

CBV(class base views) 就是在视图里使用类处理请求。

将上述代码中的urls.py 修改为如下:

1
2
3
4
5
6
from django.urls import path, include
from mytest import views

urlpatterns = [
path('index/', views.Index.as_view()),
]

注:path(‘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, request):
print('method is :' + request.method)
return render(request, 'index.html')

def post(self, request):
print('method is :' + request.method)
return render(request, 'index.html')

注:类要继承 View ,类中函数名必须小写