首页 > 其他分享 >选择使用通用视图(Generic Views)或视图集(ViewSets)

选择使用通用视图(Generic Views)或视图集(ViewSets)

时间:2024-10-31 12:09:58浏览次数:1  
标签:通用 或视 Views 视图 路由 router import 图集

在Django REST Framework中,通用视图视图集都可以用于快速构建REST API。它们各自有不同的适用场景,下面将详细介绍如何在两者之间进行选择。

通用视图(Generic Views)

通用视图提供了一些常用的、独立的视图类,如 ListCreateAPIViewRetrieveUpdateDestroyAPIView 等,用于处理增删改查中的某一种或某几种功能,适合在以下情况使用:

  • 仅需要部分功能:例如,只有列表和创建操作,或只需要更新和删除操作。
  • 视图逻辑较为简单:如果你的视图只负责一种单一的操作(如列出所有数据,或者检索单个对象),通用视图就非常合适。
  • 对自定义需求较高:通用视图易于调整和扩展,当你需要对特定请求类型进行精细控制时,使用通用视图能让代码结构更清晰。

示例代码

views.py 中定义两个通用视图:

from rest_framework import generics
from .models import Snippet
from .serializers import SnippetSerializer

class SnippetList(generics.ListCreateAPIView):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer

class SnippetDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer

urls.py 中手动配置路由:

from django.urls import path
from .views import SnippetList, SnippetDetail

urlpatterns = [
    path('snippets/', SnippetList.as_view(), name='snippet-list'),          # 用于列出和创建
    path('snippets/<int:pk>/', SnippetDetail.as_view(), name='snippet-detail'),  # 用于检索、更新和删除
]

视图集(ViewSets)

视图集将多个视图逻辑(如列出、创建、检索、更新、删除)组合在一个类中。适合以下情况:

  • 需要完整的CRUD功能:如果API端点需要支持所有的增删改查功能,使用视图集会更简洁高效。
  • RESTful API风格的规范路由:使用 router 可以自动生成规范的RESTful路由,简化代码。
  • 代码简洁且重用性高:视图集可以大大减少视图代码数量,并通过配置 router 实现自动化路由。

示例代码

views.py 中定义一个视图集:

from rest_framework import viewsets
from .models import Snippet
from .serializers import SnippetSerializer

class SnippetViewSet(viewsets.ModelViewSet):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer

urls.py 中使用 router 自动生成路由:

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import SnippetViewSet

router = DefaultRouter()
router.register(r'snippets', SnippetViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

如何选择?

  • 如果只需要部分API操作,例如只需要列表和创建,或只需要检索和更新,那么选择通用视图
  • 如果需要完整的CRUD操作且希望使用自动化路由,选择视图集,因为视图集将所有CRUD操作合并在一起,同时结合router可以生成RESTful风格的路由。
  • 自定义需求较多时,使用通用视图有助于更细致地控制不同请求的处理逻辑;而对于较简单的CRUD功能,视图集提供了更便捷的代码组织方式。

以上是通用视图和视图集的基本适用场景及代码示例。

标签:通用,或视,Views,视图,路由,router,import,图集
From: https://www.cnblogs.com/win1998/p/18517452

相关文章

  • Rollup 同步物化视图
    同步物化视图|StarRockshttps://docs.starrocks.io/zh/docs/using_starrocks/Materialized_view-single_table/同步物化视图本文介绍如何在StarRocks中创建、使用以及管理同步物化视图(Rollup)。同步物化视图下,所有对于基表的数据变更都会自动同步更新到物化视图中。您无需......
  • SQL Server创建用户只能访问指定数据库和视图
    我们在给数据库用户赋予权限时,有时候不想让该用户看到太多过程表和过程视图,这时就需要限定用户的访问权限第一步:创建用户创建数据库连接后,进入安全性——登录名,单击右键,新建登录名,并设置默认数据库第二步:设置用户映射点击用户映射,勾选指定要访问的数据库,数据库成员身份默认......
  • 数据库对视图的学习
    视图目录视图什么是视图视图的作用视图操作创建视图更新视图查看视图删除视图视图规则与限制什么是视图MySQL中的视图(View)是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含行和列,但视图本身不包含数据。视图中的数据是存储在基础表中的数据。视图的作用简化复杂查询:......
  • 10.29 视图
    数据库之视图(一)视图的介绍=============================一、什么是视图?视图是一个虚拟表,它是一个虚拟表,它不在数据库中以存储的形式保存(本身不包含数据),是在使用视图的时候动态生成。二、视图的优点?1、提高查询效率数据库中的数据查询非常复杂,可以简化sql语句2、安全有些......
  • 数据库之视图
    一、什么是视图?视图是一个虚拟表,它是一个虚拟表,它不在数据库中以存储的形式保存(本身不包含数据),是在使用视图的时候动态生成。二、视图的优点?1、提高查询效率数据库中的数据查询非常复杂,可以简化sql语句2、安全有些保密字段,可以通过创建视图限制用户对某些字段进行操作3、简......
  • 第12课—数据库之视图
    数据库之视图(一)视图的介绍=============================一、什么是视图?视图是一个虚拟表,它是一个虚拟表,它不在数据库中以存储的形式保存(本身不包含数据),是在使用视图的时候动态生成。二、视图的优点?1、提高查询效率数据库中的数据查询非常复杂,可以简化sql语句2、安全有些......
  • GaussDB数据库特性-物化视图简介
    一、前言随着企业数据量的不断增长和业务需求的复杂性增加,选择一个高效、可靠且智能的数据存储和管理解决方案变得越来越重要。GaussDB是一种先进的关系型数据库管理系统,为企业提供了强大的数据处理能力,其物化视图(MaterializedViews)功能在数据查询和管理方面具有重要作用。本文......
  • GA/T1400视图库平台EasyCVR视频设备轨迹回放平台智慧园区视频监控方案
    信息技术的持续进步和城市化进程的加快,使得作为城市发展关键组成部分的智慧园区对监控安全和智能管理的需求日益增长。GA/T1400视图库平台EasyCVR推出的智慧园区视频监控方案正是为了满足这一需求而设计的。该方案整合了高清视频监控、智能分析和远程管理等尖端技术,为智慧园区在安......
  • GA/T1400视图库平台EasyCVR视频设备轨迹回放平台智慧园区视频监控方案
    信息技术的持续进步和城市化进程的加快,使得作为城市发展关键组成部分的智慧园区对监控安全和智能管理的需求日益增长。GA/T1400视图库平台EasyCVR推出的智慧园区视频监控方案正是为了满足这一需求而设计的。该方案整合了高清视频监控、智能分析和远程管理等尖端技术,为智慧园区在安......
  • 【数据库】数据库管理(上)事务 视图 索引分类以及生效规则
    文章目录一、事务处理1-1事务特征1-2事务控制语句二、数据库视图三、数据库索引3-1主键索引(PRIMARYKEY)3-2唯一索引(UNIQUE)3-3常规索引(INDEX)3-4全文索引(FULLTEXT)3-5组合索引(Compound)3-6空间索引(Spatial)管理索引删除索引查看索引添加正确的索引索引失效一、......