首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在django restframework中反转ViewSet的自定义操作的URL

在Django Rest Framework中,可以通过自定义ViewSet的操作来实现URL的反转。URL反转是指根据视图函数或视图类的名称,生成对应的URL。

要在Django Rest Framework中反转ViewSet的自定义操作的URL,可以按照以下步骤进行操作:

  1. 首先,在ViewSet中定义自定义操作。例如,我们定义一个名为"custom_action"的自定义操作:
代码语言:python
代码运行次数:0
复制
from rest_framework.decorators import action
from rest_framework.response import Response

class MyViewSet(viewsets.ViewSet):
    # 其他默认操作...

    @action(detail=False, methods=['get'])
    def custom_action(self, request):
        # 自定义操作的逻辑...
        return Response({'message': 'Custom action executed'})
  1. 在urls.py文件中配置URL路由。使用router.register()方法注册ViewSet,并使用@action装饰器为自定义操作生成URL。注意,这里的basename参数需要设置为ViewSet的名称:
代码语言:python
代码运行次数:0
复制
from django.urls import include, path
from rest_framework import routers

router = routers.DefaultRouter()
router.register(r'myviewset', MyViewSet, basename='myviewset')

urlpatterns = [
    path('', include(router.urls)),
]
  1. 现在,可以使用reverse()函数来反转自定义操作的URL。在视图函数或视图类中,通过调用reverse()函数并传递自定义操作的名称和ViewSet的名称,可以获取到对应的URL:
代码语言:python
代码运行次数:0
复制
from django.urls import reverse

# 在视图函数或视图类中使用reverse()函数反转URL
url = reverse('myviewset-custom_action')

以上就是在Django Rest Framework中反转ViewSet自定义操作URL的方法。通过定义自定义操作,并在URL路由中注册和配置,然后使用reverse()函数进行URL反转,可以方便地生成自定义操作的URL。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Rest_framework Route

SimpleRouter类源码 总结 Rest_framework Router 路由器 虽说django rest_framework是基于django的,url路由到视图主要还是利用django...的dispatcher路由系统(可以参考我的另一篇关于django url dispatcher详解),但是rest_framework还在django路由的基础上,提供了基于restful风格的更高等级的路由方式...下面就结合一条route就定义了产生实际url路由和相应的对url的操作映射。 ViewSet结合Router,自动生成url。...# 关键:遍历路由,处理每条路由中的方法,是否viewset中定义,只有viewset中定义了才会放入新的mapping中。...通过源码的解析,我们就懂得了怎么利用Router路由器类来定制化和简化我们的一些经常要做的工作,也提供了可自定义的接口给我们。 认识Router就要清晰认识 4中路由类型 和 其设计原理模式。

1.1K10

Django rest Framework入门 四 :视图

* **视图类代码** 这里有一个特别的处理,就是视图类中的函数名是list, create这样具体的动作,而不是在django中的put,post这样的请求方法,这和后面的url中配置有关。...这里事实上是DRF框架对路由的分发机制在Django的基础上做了优化,让我们可以将所有的请求方法都写在一个视图类中,而不用像在Django中那样必须区分列表类视图还是详情类视图。...# 实现自定义的API 上面两个案例中,不管是使用ModelViewSet还是ViewSet,实现的都是对数据库的增删查改这四种功能,但是实际开发过程中,往往还有其他一些比较复杂的场景,这个时候就需要自定义开发一些...实现自定义API 基于ViewSet实现自定义API需要修改视图类和url两部分代码。...list, create这样具体的动作, 而不是在django中的put,post这样的请求方法, 这和后面的url中配置有关 ''' def list(self, request

11910
  • RESTful源码笔记之RESTful Framework的APIview, Viewset总结分析

    APIView对django本身的View进行封装,从上述的代码,这样分析,两者的差别看起来不是很大,但实际中APIView做了很多东西,它定义了很多属性与方法,举几个例子 # 这三个是常用的属性...,如课程名字,老师,封面等等,但当获取课程的具体信息,我们还要将他们的章节以及相关下载资料(很明显,章节是另外一个model,有一个外键指向course),这些信息会很多,在获取课程列表,将这些传回去显然是不理智的...# 只需要加入一次 url(r'^', include(router.urls)),] route中使用的一定要是ViewSet,用router.register的方法注册url不仅可以很好的管理...url,不会导致url过多而混乱,而且还能实现http方法与mixins中的相关方法进行连接。...在viewset中,还提供了两个以及与mixins绑定好的ViewSet,当然,这两个ViewSet完全可以自己实现: class ReadOnlyModelViewSet(mixins.RetrieveModelMixin

    1K10

    django rest framework通用view

    APIView对django本身的View进行封装,从上述的代码,这样分析,两者的差别看起来不是很大,但实际中APIView做了很多东西,它定义了很多属性与方法,举几个例子 # 这三个是常用的属性...,如课程名字,老师,封面等等,但当获取课程的具体信息,我们还要将他们的章节以及相关下载资料(很明显,章节是另外一个model,有一个外键指向course),这些信息会很多,在获取课程列表,将这些传回去显然是不理智的...# 只需要 url(r'^', include(router.urls)),] route中使用的一定要是ViewSet,用router.register的方法注册url不仅可以很好的管理url...,不会导致url过多而混乱,而且还能实现http方法与mixins中的相关方法进行连接。   ...在viewset中,还提供了两个以及与mixins绑定好的ViewSet,当然,这两个ViewSet完全可以自己实现: class ReadOnlyModelViewSet(mixins.RetrieveModelMixin

    1K20

    测试开发进阶(二十九)

    /put/delete等请求方法,而只支持action动作 但是 ViewSet类中没有提供 get_object(), get_serializer等方法 继承 viewsets.GenericViewSet...中 View DRF中 APIView GenericAPIView mixins扩展类 CreateAPIView(合并拓展类) 视图集 action和请求方法的映射 ViewSet GenericViewSet...为视图集「不要加as_view」 将自动生成的路由添加到列表中 from django.urls import path, includefrom projects import viewsfrom rest_framework...参数用于指定该动作支持的请求方法,默认为get detail用于指定该动作要处理的是否为详情资源对象「url是否需要传递pk值」 在 url.py中添加 path('project/names/', views.ProjectsViewSet.as_view...urlpath url的路径名 urlname url的别名「应用名称-url_name」 测试 $ http :8000/projects/names/ ?

    67110

    django-rest-framewor

    DRF(Django RestFramework)是一套基于Django开发的、帮助我们更好的设计符合REST规范的Web应用的一个Django App,所以,本质上,它是一个Django App。...2 解析器组件 (用来解析数据的请求的组件)   Django并不能处理请求协议为application/json编码协议的数据   注意: DRF解析器会封装到View中的parsers内,在视图函数被调用时...定义:需要为post新增url,因为根据规范,url定位资源,http请求方式定义用户行为 定义post方法:在视图类中定义post方法 开始序列化:通过我们上面定义的序列化类,创建一个序列化对象,传入参数...进行接口逻辑优化     导入模块 from rest_framework.viewset import ModelViewSet     设计url re_path(r'books/$, views.BookView.as_view...程序启动,开始初始化,获取配置信息,获取视图类并加载到内存中,获取url及视图类的对应关系 开始绑定视图类和url的对应关系,执行as_view()方法 as_view()方法被执行的时候传递了参数,为字典形式

    1.6K10

    Flask框架在Python面试中的应用与实战

    一、常见面试问题核心组件与工作流程视图(Views):解释视图在DRF中的作用,介绍基于类的视图(ViewSet、GenericViewSet)与视图集(ViewSets)的概念,以及如何关联到URL。...路由与URL配置路由器(Router):说明路由器如何根据ViewSet自动创建API路由,以及如何自定义路由命名和视图动作。...版本控制:讨论DRF中实现API版本控制的方法,如URL路径版本、请求头版本等。...权限控制与认证权限(Permissions):概述DRF中的权限系统,列举常用权限类(如IsAuthenticated、IsAdminUser等),并展示如何自定义权限。...异常处理:介绍如何使用DRF的异常体系(如PermissionDenied、NotAuthenticated、ValidationError等)处理错误情况,并自定义异常响应。

    13910

    Python进阶42-drf框架(四)

    :基于auth的认证规则 Django框架采用的是RBAC认证规则,RBAC认证规则通常分为三表规则、五表规则,Django采用的是六表规则 三表规则: 1.用户表 2.角色表 3.权限表 五表规则...6.用户权限关联表 ---- 自定义权限六表 settings.py ## 配置自定义user表 AUTH_USER_MODEL = 'api.User' models.py from django.db...,代表有权限,返回True ii.不满足设置的用户条件,代表有权限,返回False """ 频率组件 ---- 频率类源码 入口 # 1)APIView的dispath方法中的 self.initial...# 3) 在settings配置文件中,配置drf的DEFAULT_THROTTLE_RATES,格式为 {scope字符串: '次数/时间'} # 4) 在自定义频率类中重写 get_cache_key...,作为操作缓存的key return 'throttle_%(scope)s_%(ident)s' % {'scope': self.scope, 'ident': mobile} --

    1.7K20

    Django rest-framework视图家族

    基础上额外提供了三个方法和三个类属性,如果不配合视图工具类,则体现不出来优势所在 使用它的好处:视图中的增删改查逻辑其实大差不差,但操作的资源不一致(操作的资源指的是models模型类和序列化类),将资源形成配置...中的删除是真正的删除 # 删除接口一般是自己实现重写到的,因为真正的业务不需要真正的删除 pass # django源代码中是真的删除 return...): pass 视图集 viewsets 重写as_view方法,增加action参数(可以完成路由层的请求方法映射关系) 可以在路由层中自定义请求方法的映射关系 使用viewsets的视图集类实现接口...配置对哪个表进行操作 配置使用哪个序列化类 可自定义路由层中请求方法的映射关系来实现接口 路由层 url(r'^v5/cars/$', views.ViewViewsetsAPIView.as_view...ViewSet视图类的都可以注册,会产生'^v5/cars/$' 和 '^v5/cars/(?

    77120

    3. DRF进阶之DRF视图和常用功能

    View:Django默认的视图基类,负责将视图连接到URL,HTTP请求方法的基本调度,之前写类视图一般都用这个。...GenericAPIView:对APIView更高层次的封装,例如增加分页、过滤器 GenericViewSet:继承GenericAPIView和ViewSet ViewSet:继承APIView...,实现以下功能: 增加queryset属性,指定操作的数据,不用再将数据传给序列化器,会自动实现。...,删除,查看 ViewSet类 GenericAPIView已经完成了许多功能,但会有一个问题,获取所有用户列表和单个用户需要分别定义两个视图和URL路由,使用ViewSet可以很好解决这个问题,并且实现了路由自动映射...migrate 全局urls.py配置认证接口URL: django_drf/urls.py from django.contrib import admin from django.urls import

    4.8K10

    drf框架中所有视图及用法

    0909自我总结 drf框架中所有视图及用法 一.drf框架中的所有视图类 from django.views import View from rest_framework import views,...generics, mixins, viewsets 最基础:django自带的views类 drf框架中最基础的视图类:views.APIView drf框架中工具视图:generics GenericAPIView...({'get': 'retrieve', 'delete': 'remove_obj'}) GenericViewSet:与模型类有关的接口视图集 - 可以从mixins那继承功能,也可以自定义功能 ViewSet...:与模型类无关或不是标准模型类接口 - 一般都是自定义功能 三.generics中GenericAPIView使用 将 queryset 和 serializer_class 封装成类属性,提供了三个方法...居然有什么方法看源码即可ctrl+左键看源码 六自定制视图 本来get他就只会找类中get方法我们可以对其设置让他找我们对于的名称 路由层 from django.conf.urls import url

    1.8K30

    【愚公系列】2022年04月 Python教学课程 71-DRF框架之内置路由

    文章目录 一、路由 1.SimpleRouter 1.1 基本使用 1.2 合并使用 1.3 额外操作的路由 2.DefaultRouter 一、路由 对于视图集ViewSet,我们除了可以自己手动指明请求方式与视图方法...viewset- 视图集类。 (可选)您还可以指定一个附加参数: basename- 用于所创建的 URL名称的基础。如果未设置,则将根据视图集的属性(如果有)自动生成基名。...这些额外的操作将包含在生成的路由中。...例如,如果要将自定义操作的 URL 更改为 ,则可以编写:^users/{pk}/change-password/$ from myapp.permissions import IsAdminOrIsSelf...例如: router = SimpleRouter(trailing_slash=False) 尾随斜杠在 Django 中是约定俗成的,但在其他一些框架(如 Rails)中默认不使用。

    94020
    领券