django中函数视图和类视图的使用

1 类视图引入以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。例如下方的函数视图:def register(request): """处理注册""" # 获取请求方法,判断是GET/POST请求 if request.method == 'GET': # 处理GET请求,返回注册页面 return render
摘要由CSDN通过智能技术生成

1 类视图引入

以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。
例如下方的函数视图:

def register(request):
    """处理注册"""

    # 获取请求方法,判断是GET/POST请求
    if request.method == 'GET':
        # 处理GET请求,返回注册页面
        return render(request, 'register.html')
    else:
        # 处理POST请求,实现注册逻辑
        return HttpResponse('这里实现注册逻辑')

在Django中也可以使用类来定义一个视图,称为类视图
使用类视图可以将视图对应的不同请求方式以类中的不同方法来区别定义。如下所示:

from django.views.generic import View

class RegisterView(View):
    """类视图:处理注册"""

    def get(self, request):
        """处理GET请求,返回注册页面"""
        return render(request, 'register.html')

    def post(self, request):
        """处理POST请求,实现注册逻辑"""
        return HttpResponse('这里实现注册逻辑')

类视图的好处:
代码可读性好
类视图相对于函数视图有更高的复用性, 如果其他地方需要用到某个类视图的某个特定逻辑,直接继承该类视图即可

2 类视图使用

定义类视图需要继承自Django提供的父类View,可使用from django.views.generic import View或者from django.views.generic.base import View 导入,定义方式如上所示。
配置路由时,使用类视图的**as_view()**方法来添加。

urlpatterns = [
    # 视图函数:注册
    # url(r'^register/$', views.register, name='register'),
    # 类视图:注册
    url(r'^register/$', views.RegisterView.as_view(), name='register'),
]

3.类视图原理

@classonlymethod
    def as_view(cls, **initkwargs):
        """
        Main entry point for a request-response process.
        """
        ...省略代码...

        
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 有两种主要的视图方式:视图函数视图。它们各自有自己的优势和适用场景。下面是 Django 视图函数视图的对比: 1. 视图: - 视图是基于视图,通过继承 Django 提供的基础来实现。 - 视图提供了更强大的功能和更高级的抽象,可以处理更复杂的逻辑和场景。 - 视图提供了一组标准的 HTTP 方法(如 GET、POST、PUT 等)对应于不同的请求型,使得处理不同请求型的逻辑更加清晰。 - 视图具有可重用性,可以通过继承来扩展和定制。 - 视图通常用于需要处理多个请求型、需要复杂逻辑或需要使用 Mixin 的场景。 2. 函数视图: - 函数视图是基于函数视图,直接编函数来处理请求和生成响应。 - 函数视图简单直观,适用于处理简单的逻辑和场景。 - 函数视图可以更加灵活地处理请求和响应,可以直接控制返回的数据型和格式。 - 函数视图可以在一个文件,使得代码结构更简洁。 - 函数视图通常用于处理简单的请求、快速原型开发或者需要直接控制请求和响应的场景。 总体而言,视图适用于处理复杂的逻辑和场景,具有更高级的抽象和可重用性;而函数视图则适用于处理简单的逻辑和场景,具有更灵活的请求和响应控制。具体选择哪种视图方式取决于项目的需求和个人偏好。在实际开发,通常会根据具体情况来选择使用视图函数视图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值