视图集的认证和权限在 Django REST Framework 中,我们可以使用认证(Authentication)和权限(Permission)来控制 API 的访问权限。...要在视图集中使用认证和权限,我们可以分别定义 authentication_classes 和 permission_classes 属性。...例如,我们可以定义一个名为 BookViewSet 的视图集类,并指定它的认证方式为 Token 认证,权限为 IsAuthenticated:from rest_framework.authentication...import TokenAuthenticationfrom rest_framework.permissions import IsAuthenticatedfrom .models import...这样,只有经过 Token 认证并被授权的用户才能访问 BookViewSet 视图集。
视图集的路由配置要让视图集生效,我们还需要将其注册到路由中。...在 Django REST Framework 中,我们可以使用 DefaultRouter 或 SimpleRouter 来自动生成视图集的路由。...例如,我们可以定义一个名为 router 的路由对象,并将 BookViewSet 视图集注册到路由中:from rest_framework import routersfrom .views import...这样,我们就为 BookViewSet 视图集自动生成了以下路由:HTTP 方法URL 路径视图函数GET/books/listPOST/books/createGET/books/{id}/retrievePUT...请求方法,URL 路径表示客户端请求的资源路径,视图函数表示服务器端处理请求的方法。
在 Django REST Framework 中,视图集(Viewset)是一种简化了视图函数(View Function)的开发方式,它可以让开发者更快速、更方便地创建 RESTful API。...视图集的基本用法在 Django REST Framework 中,视图集是一个处理 HTTP 请求的类,它封装了一组相关的视图函数,包括列表视图(List View)、详情视图(Detail View...使用视图集,我们可以将这些相关的视图函数封装在同一个类中,以便更好地组织和管理代码。要创建一个视图集,我们需要先定义一个视图集类,并指定其对应的模型和序列化器类。...例如,我们可以定义一个名为 BookViewSet 的视图集类,它对应的模型是 Book,对应的序列化器是 BookSerializer:from rest_framework import viewsetsfrom...这样,我们就创建了一个基于模型 Book 的视图集,它支持常用的 CRUD 操作,包括创建、更新、删除、查询列表和查询详情等。
视图集的过滤器在实际开发中,我们通常需要对 API 的返回结果进行过滤、排序和分页等操作。在 Django REST Framework 中,我们可以使用过滤器(Filter)来实现这些功能。...过滤器可以根据客户端提供的查询参数来对返回结果进行过滤、排序和分页等操作。要在视图集中使用过滤器,我们可以定义 filter_backends 属性,并指定过滤器类。...例如,我们可以定义一个名为 BookViewSet 的视图集类,并使用 DjangoFilterBackend 过滤器来对查询结果进行过滤:from django_filters.rest_framework...在 Django REST Framework 中,我们可以使用过滤器(Filter)来实现这些功能。过滤器可以根据客户端提供的查询参数来对返回结果进行过滤、排序和分页等操作。...例如,我们可以定义一个名为 BookViewSet 的视图集类,并使用 DjangoFilterBackend 过滤器来对查询结果进行过滤:from django_filters.rest_framework
视图集的路由在 Django REST Framework 中,我们可以使用路由(Router)来自动生成 API 的 URL 路由。...例如,我们可以在 views.py 文件中定义一个名为 router 的路由对象,并注册 BookViewSet 视图集:from rest_framework import routersfrom ....结论视图集(Viewset)是 Django REST Framework 中非常方便的 API 开发方式,它可以简化 API 的编写和维护工作,提高开发效率和代码可读性。...通过本文的介绍,我们了解了如何使用视图集来开发 RESTful API,并学习了视图集的基本用法、认证和权限、过滤器、路由等方面的知识。...希望读者能够通过本文的学习,更好地掌握 Django REST Framework 中的视图集技术,并用它来构建更加高效、安全和可靠的 RESTful API。
在 Django REST Framework 中,视图集(Viewset)是一种方便的 API 开发方式,它将视图(View)和序列化器(Serializer)组合起来,提供了一组标准的 API 操作...(列表、创建、更新、删除、详情等),可以大大简化 API 的编写和维护工作,提高开发效率和代码可读性。...视图集可以分为以下几种类型:ModelViewSetModelViewSet 是最常用的视图集类型,它继承了 GenericAPIView 和 ModelMixin,可以自动生成常用的 CRUD 操作,...例如,我们可以在 views.py 文件中定义一个 BookViewSet 视图集:from rest_framework import viewsetsfrom .models import Bookfrom...例如,我们可以在 views.py 文件中定义一个 AuthorViewSet 视图集:from rest_framework import viewsetsfrom .models import Authorfrom
GenericViewSetGenericViewSet 继承自 GenericAPIView,它是 ModelViewSet 和 ReadOnlyModelViewSet 的基类,提供了基本的视图操作...与 ModelViewSet 和 ReadOnlyModelViewSet 不同的是,GenericViewSet 不自动绑定任何查询集和序列化器,需要手动配置。...例如,我们可以在 views.py 文件中定义一个 PublisherViewSet 视图集:from rest_framework import viewsetsfrom .models import...destroy(self, request, *args, **kwargs): # 删除操作 pass在这个例子中,我们使用 viewsets.GenericViewSet 创建一个视图集...然后,我们手动实现了视图集的各种操作,包括列表查询、创建、详情查询、更新、部分更新和删除。
如何使用视图集定义视图集定义视图集需要继承 DRF 提供的视图集类,例如 ModelViewSet:from rest_framework import viewsetsfrom .models import...注册视图集接下来,需要将定义好的视图集注册到路由中。我们可以使用 DRF 提供的 DefaultRouter 类来帮助我们自动生成 URL 配置。...例如,在 urls.py 文件中,我们可以这样注册 BookViewSet:from django.urls import path, includefrom rest_framework.routers...BookViewSet 视图集。...最后,我们将 router.urls 包含在 Django 的 URLConf 中,以便让 Django 可以将其添加到项目的 URL 配置中。
定制视图集操作视图集提供了一些通用的操作,例如获取列表、创建对象、获取详情、更新对象、部分更新对象和删除对象等。如果需要定制这些操作的行为,可以在视图集中重写对应的方法。...我们使用 self.request.user 获取当前请求的用户,并将其设置为新书籍的作者。...我们使用 self.request.user 获取当前请求的用户,并将其用于过滤书籍列表,只返回当前用户的书籍。视图集类型DRF 中提供了多种视图集类型,可以根据不同的需求选择合适的视图集类型。...以下是几种常见的视图集类型:ModelViewSet: 提供了默认的 CRUD 操作,以及一些其他常见操作(例如过滤、分页、搜索等)。...视图集类型的选择取决于 API 的需求和开发人员的编写习惯。
下面是一个完整的 DRF 视图集示例,包括定义视图集、注册视图集、定制视图集操作等:from rest_framework import viewsetsfrom rest_framework.permissions...BookViewSet 提供了默认的 CRUD 操作,但也定制了 perform_create() 方法和 get_queryset() 方法,以便实现更多功能。...在视图集中,我们还使用了 DRF 的权限控制功能,只允许已认证用户访问 API。...from django.urls import path, includefrom rest_framework.routers import DefaultRouterfrom .views import...然后我们将路由器中的 URL 配置包含在 Django 项目的根 URL 配置中。
Django REST Framework是基于Django的一个用于构建Web API的框架。它提供了许多用于构建Web API的工具和实用程序,其中最常用的是类视图。...类视图是一种Django REST Framework的API视图,它是基于类的视图。它提供了一种方便的方式来编写可重用的Web API视图,并带有许多有用的内置功能。...APIViewAPIView是Django REST Framework中最基本的类视图之一。它提供了一个通用的方式来处理HTTP请求,并返回一个HTTP响应。...总结在Django REST Framework中,类视图是一种方便的方式来编写Web API视图,并带有许多有用的内置功能。...本文介绍了Django REST Framework中最常用的类视图,包括APIView,GenericAPIView,ModelViewSet,ReadOnlyModelViewSet和ViewSet
Django REST Framework中的视图装饰器提供了一种方便的方式来自定义视图的行为。视图装饰器是一个函数,它接受一个视图函数作为参数,并返回修改后的视图函数。...在本文中,我们将介绍Django REST Framework中最常用的视图装饰器,包括@api_view,@permission_classes,@authentication_classes和@throttle_classes...@api_view@api_view是Django REST Framework中最常用的视图装饰器之一。它将普通的函数视图转换为可以处理各种HTTP方法的API视图。...下面是一个使用@api_view装饰器的示例:from rest_framework.decorators import api_viewfrom rest_framework.response import...@permission_classes@permission_classes是Django REST Framework中的另一个常用的视图装饰器。它允许您指定在请求被处理之前必须满足的权限要求。
@authentication_classes@authentication_classes是Django REST Framework中的另一个常用的视图装饰器。...下面是一个使用@authentication_classes装饰器的示例:from rest_framework.decorators import api_view, authentication_classesfrom...rest_framework.authentication import BasicAuthenticationfrom rest_framework.response import Response...这意味着只有提供正确的基本@authentication_classes@authentication_classes是Django REST Framework中的另一个常用的视图装饰器。...下面是一个使用@authentication_classes装饰器的示例:from rest_framework.decorators import api_view, authentication_classesfrom
因此,django-rest-framework 引入了视图集(Viewsets),把对同一个资源的不同操作,集中到一个类中。...同样的,针对 Web 开发中的常见逻辑,django-rest-framework 也提供了通用视图集,进一步简化开发工作。...使用视图集的一个更大的好处,就是可以配合 django-rest-framework 提供的路由器(router),自动生成 API 的 URL,不需要我们再手工将 URL 模式和视图函数绑定了。...第二个参数就是视图集,第三个参数 basename 用于指定视图集生成的视图函数名的前缀。在 django 的 URL 中,一条路由通常由 URL 模式,对应的视图函数和视图函数名组成。...不过,根据 Python 之禅,显式优于隐式,因此即使你设置的 basename 和 django-rest-framework 默认生成的一样,也比不指定要好。
Django REST Framework(以下简称DRF)是基于Django框架构建的Web API框架。...路由器可以根据视图函数的名称和参数,自动生成URL,并将请求分发到对应的视图函数中。使用路由器可以避免手动编写URL配置的繁琐和容易出错。二、路由器的使用安装DRF在使用路由器之前,需要先安装DRF。...import routersrouter = routers.DefaultRouter()注册视图函数使用路由器注册视图函数有两种方式:基于视图集(Viewsets)和基于视图(Views)。...(1)基于视图集在DRF中,视图集是一组视图函数的集合,可以实现类似于CRUD的操作。...例如,下面的代码定义了一个继承自ModelViewSet的视图集类BookViewSet,然后将这个类注册到路由器中:from rest_framework import viewsetsfrom .models
一是 action 装饰器,它用来装饰一个视图集中的方法,被装饰的方法会被 django-rest-framework 的路由自动注册为一个 API 接口。...回顾一下我们之前在使用视图集 viewset 时提到过 action(动作)的概念,django-rest-framework 预定义了几个标准的动作,分别为 list 获取资源列表,retrieve...视图集中所有以上提及的以标准动作命名的方法,都会被 django-rest-framework 的路由自动注册为标准的 API 接口。...django-rest-framework 默认只能识别标准命名的视图集方法并将其注册为 API,但我们可以添加更多非标准的 action,而为了让 django-rest-framework 能够识别这些方法...由于 PostViewSet 视图集已经通过 django-rest-framework 的路由进行了注册,因此 list_archive_dates 也会被连带着自动注册为一个接口。
文章目录 前言 一、基本视图集 1.ViewSet 2.GenericViewSet 二、扩展视图集 1.ModelViewSet 2.ReadOnlyModelViewSet 三、用法补充 1.扩展方法使用...前言 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据...视图集只在使用as_view()方法的时候,才会将action动作与具体请求方式对应上。..."""经过上面的处理,我们就已经把所有视图方法写在一个类中了,但是继承父类有点多 所以,drf里面提供了模型视图集[ModelViewSet],可以一次性提供5个api接口的方法 最后,def还提供了只读模型视图集...[ReadOnlyModelViewSet],可以提供获取多条数据和一条数据的视图方法 """ from rest_framework.viewsets import ModelViewSet,ReadOnlyModelViewSet
添加rest_framework应用 我们利用在Django框架学习中创建的demo工程,在settings.py的INSTALLED_APPS中添加'rest_framework'。 ?...编写视图 在booktest应用的views.py中创建视图BookInfoViewSet,这是一个视图集合。...ModelViewSet): queryset = BookInfo.objects.all() serializer_class = BookInfoSerializer queryset 指明该视图集在查询数据时使用的查询集...= DefaultRouter() # 可以处理视图的路由器 router.register(r'books', views.BookInfoViewSet) # 向路由器中注册视图集 urlpatterns...至此,是不是发现Django REST framework很好用!
作者:HelloGitHub-追梦人物[1] 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库[2] 如果没有设置分页,django-rest-framework 会将所有资源类表序列化后返回...django-rest-framework 为分页功能提供了多个辅助类,常用的有: PageNumberPagination 将资源分为第 1 页、第 2 页...第 n 页,使用页码号请求分页结果。...", # 这个选项控制分页后每页的资源个数 "PAGE_SIZE": 10, } 配置完成之后,所有通用视图函数或者视图集生成的资源列表 API,返回的资源列表都会被分页。...配置文件中的分页设置将作用于全局,如果某个视图函数或者视图集不想使用全局配置怎么办呢?可以在视图函数或者视图集中设置 pagination_class 属性,指定需要使用的分页辅助类即可。...limit offset 分页形式的文章列表,而其他视图或者视图集仍将使用全局的分页配置。
Django REST框架构建Web API。...Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...from rest_framework import viewsets 一、使用视图集 ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据...视图集只在使用as_view()方法的时候,才会将action动作与具体请求方式对应上 class BookViewSet(viewsets.ViewSet): def list(self...P\d+)/$', BookViewSet.as_view({'get': 'retrieve'}), ] 三、action 属性 在视图集中, 可以通过 action 对象属性来获取当前请求视图集的
领取专属 10元无门槛券
手把手带您无忧上云