Django基于类的视图基本实现

简介: 视图可以是函数,也可以是类,类视图同样能够实现视图的功能。类视图最大的特点是可以利用不同的实例方法响应不同的HTTP请求方法(GET、POST),且可以利用面向对象的技术将代码分解为可重用的组件


视图可以是函数,也可以是类,类视图同样能够实现视图的功能。类视图最大的特点是可以利用不同的实例方法响应不同的HTTP请求方法(GET、POST),且可以利用面向对象的技术将代码分解为可重用的组件


from django.shortcuts import HttpResponse
from django.views import View
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
class FirstView(View):
    s = '(%s) Hello Django!'
    def get(self, request):
        return HttpResponse(self.s % 'GET')
    def post(self, request):
        return HttpResponse(self.s % 'POST')
    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        return super(FirstView, self).dispatch(request, *args, **kwargs)


FirstView继承自View,它是所有基于类的视图的基类。其中定义了get和post方法,映射到GET和POST请求类型


另外,FirstView重写了父类的dispatch方法,dispatch根据HTTP类型实现请求分发。例如,如果是GET请求,则分发给get方法。如果View中没有实现对应请求类型的方法,则会返回HttpResponseNotAllowed


应用于函数的装饰器不能直接应用到类方法上,需要将它转换为类方法的装饰器。可以看到在dispatch方法上添加了@method_decorator装饰器🧨

url解析器:


Django的URL解析器会将请求发送到一个函数而不是一个类,所以,需要用到View提供的as_view方法完成URL的定义:


from post.views import FirstView
urlpatterns = [
    path('watch_class/', FirstView.as_view()),
]



目录
相关文章
|
23天前
|
JSON 前端开发 API
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
40 2
|
23天前
|
JSON 数据处理 API
Django后端架构开发:视图与模板的正确使用
Django后端架构开发:视图与模板的正确使用
11 1
|
4天前
|
数据处理 Python
Django视图:构建动态Web页面的核心技术
Django视图:构建动态Web页面的核心技术
|
18天前
|
C++ Python
Django视图函数VS类视图:如何选择最适合你的开发方式?
【8月更文挑战第31天】本文对比了Django中的函数视图和类视图。函数视图直接处理HTTP请求和响应,灵活且易于维护,适用于简单业务逻辑;类视图基于Python类,提供更丰富的功能和更高的灵活性,适合处理复杂业务逻辑。选择哪种视图取决于具体需求,合理使用两者可帮助你构建高效且易维护的Django应用。
11 0
|
21天前
|
Linux Shell 数据库
python Django教程 之 安装、基本命令、视图与网站
python Django教程 之 安装、基本命令、视图与网站
|
1月前
|
安全 API Python
Django 如何使用视图动态输出 CSV 以及 PDF
Django 如何使用视图动态输出 CSV 以及 PDF
38 4
|
2月前
|
API 数据库 数据安全/隐私保护
Django配置api、管理系统和视图
Django配置api、管理系统和视图
51 1
|
1月前
|
测试技术 Shell 数据库
Django视图测试:构建可靠Web应用的关键步骤
Django视图测试:构建可靠Web应用的关键步骤
17 0
|
3月前
|
安全 API Python
Django 如何使用视图动态输出 CSV 以及 PDF
这一篇我们需要用到 python 的 csv 和 reportLab 库,通过django视图来定义输出我们需要的 csv 或者 pdf 文件。
|
3月前
|
前端开发 数据管理 API
Django REST framework中GenericAPIView与混入扩展类详解
Django REST framework中GenericAPIView与混入扩展类详解