函数视图与类视图
本文最后更新于:2 年前
在Django框架中,视图用于处理HTTP请求,并返回响应。
一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。
响应内容可以是网页的HTML、重定向、404错误、XML文档或图片等。
函数视图
视图函数的基本结构
view_name:表示视图名称。
request :必选参数,接收请求对象(HttpRequest类的实例)。
args和kwargs:可选参数,用于接收URL中的额外参数。
返回值是返回的响应对象(HttpResponse类或其子类的实例)。
基于函数的视图(Function Base Views,FBV)
在 views.py 中自定义视图函数
1
2
3
4
5
6
7
8
9
10
11
12from django.http import HttpResponse
def my_view(request):
if request.method == 'GET':
#处理代码块
return HttpResponse('GET result')
elif request.method == 'POST':
#处理代码块
return HttpResponse('POST result')
... ...
else:
#处理代码块在 urls.py 中配置视图函数的路由
1
2
3
4
5
6
7
8from django.urls import path
from django.urls import re_path
from users import views
urlpatterns = [
path('about/', views.my_view)
# re_path('route(正则)', views.my_view)
]路由详细配置见 URL路由的配置与使用 。
类视图
视图函数缺点:若所有请求方式的处理逻辑都定义在同一个视图中,视图很可能庞大且臃肿。为了解决这一问题,Django设计了类视图。
基于类的视图(Class Base Views,CBV)
在 views.py 中自定义视图类
1
2
3
4
5
6
7from django.http import HttpResponse
from django.views import View
class MyView(View):
def get(self, request):
return HttpResponse(' GET result')
def post(self,request):
return HttpResponse('POST result')在 urls.py 中配置类视图的路由
1
2
3
4
5
6from django.urls import path
from users.views import MyView
urlpatterns = [
path('about/', MyView.as_view()),
]URL配置中调用视图类的 as_view() 方法。
as_view() 方法的功能是接收请求,获取请求方法 request.method,并根据 request.method 返回相应的视图方法。
path() 函数在接收到 URL “about/” 时,会调用 MyView 类的 as_view() 方法,根据不同的请求方式执行类视图 MyView 中的不同请求方法。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!