更新时间:2022-07-26 来源:黑马程序员 浏览量:
虽然一个视图处理用户的一个请求,但HTTP提供了多种请求方式(GET、POST、PUT等),用户使用应用的某个功能时,该功能可能以任意一种方式发起请求,例如商品管理功能使用GET方式发起的呈现商品列表的请求、使用POST方式发起的修改商品请求等。此时视图需要结合条件分支,对每种请求方式分别进行处理。然而,若所有请求方式的处理逻辑都定义在同一个视图中,视图很可能庞大且臃肿。为了解决这一问题,Django设计了类视图。
类视图允许在views.py的一个类中定义不同的方法,以处理同一功能以不同请求方式发送的请求。
假设有来自同一URL的GET请求和POST请求,以函数视图和类视图的形式分别组织代码,具体示例如下:
1.以函数的形式定义视图
from django.http import HttpResponse def my_view(request): if request.method == 'Get': return HttpResponse('Get result') elif request.method == 'POST': return HttpResponse('POST result')
2.以类的形式定义视图
# views.py from django.http import HttpResponse form django.views import View class MyView(View): def get(self, request): return HttpResponse('Get result') def post(self,request): return HttpResponse('POST result')
Django的URLconf期望将和请求关联的参数直接传递给可调用的函数而非定义了方法的类,所以URL配置中会调用视图类的as_view()方法。as_view()方法的功能是接收请求,获取请求方法request.method,并根据request.method返回相应的视图方法。
在urls.py中配置URL,调用以上定义的类视图,示例代码如下:
# urls.py from django.urls import path from views import MyView urlpatterns = [ path('about/', MyView.as_view()), ]
以上示例中的path()函数在接收到URL“about/”时,会调用MyView类的as_view()方法,根据不同的请求方式执行类视图MyView中的不同请求方法。
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19