python - Django-rest-framework @detail_route 用于特定网址

标签 python django django-rest-framework

我正在使用Django-rest-framework==3.3.2Django==1.8.8 。我有一个简单的GenericView

from rest_framework import generics
from rest_framework.decorators import detail_route

class MyApiView(generics.RetrieveAPIView):
    serializer = MySerializer
    def get(self, *args, **kwargs):
        super(MyApiView, self).get(*args, **kwargs)

    @detail_route(methods=['post'])
    def custom_action(self, request)
        # do something important
        return Response()

如果我使用router,效果很好。 django-rest-framework 提供了这个功能,但是我正在手动创建所有网址,并且希望对 detail_route 执行相同的操作。

我想知道我是否可以做这样的事情:

from django.conf.urls import patterns, url
from myapi import views
urlpatterns = patterns(
    '',
    url(r'^my-api/$', views.MyApiView.as_view()),
    url(r'^my-api/action$', views.MyApiView.custom_action.as_view()),

)

当然,第二个网址不起作用。这只是我想做的一个例子。

提前致谢。

最佳答案

per the example from the Viewsets docs ,您可以将各个方法提取到 View 中:

custom_action_view = views.MyApiView.as_view({"post": "custom_action"})

然后您就可以像平常一样自由地路由:

urlpatterns = [
  url(r'^my-api/action$', custom_action_view),
]

希望对您有所帮助。

关于python - Django-rest-framework @detail_route 用于特定网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35554173/

相关文章:

python - 使用字典替换 pandas 数据框上给定索引号的列值

python - Python/Selenium 中的 by.cssContainingText

django - 如何通过序列化器发布数组数据?

django - 反向关系 Django Rest Framework 中的写操作

django - 覆盖 Django rest ViewSet 中的列表方法

python - 为什么 Python 中的浮点除法用较小的数字更快?

python尝试除了不同的 Action

django - 我如何使用 taggit-selectize 以便所有用户创建的标签都显示在自动完成中?

django - session 作为 Django REST 中的持久存储?

django - Django 和 Tastypie 的反向 URL 问题