有没有办法在使用url_path时美化detail_route的名字?

时间:2016-03-12 13:20:24

标签: python-2.7 django-models django-rest-framework

Project使用Django REST Framework。以下是详细视图之一:

    @detail_route(methods=['POST'], 
    permission_classes=[IsAuthenticated], 
    url_path="invite/(?P<member_id>[^/.]+)")

    def invite_member(self, request, pk=None, member_id=None):
        ...

打开浏览器时,我看到此网址指定如下:

^api/ ^deal/ ^ ^deals/(?P<pk>[^/.]+)/invite/(?P<member_id>[^/.]+)/$ [name='deal-invite/(?P<member-id>[^/.]+)']

正如你所看到的,这个视图的名字看起来非常糟糕 - 有没有办法让它变得更漂亮?

1 个答案:

答案 0 :(得分:0)

如果您不想使用为自定义操作生成的默认名称,可以使用url_name参数对其进行自定义。

例如,如果您想将自定义操作的名称更改为“user-change-password”,您可以写一下:

from myapp.permissions import IsAdminOrIsSelf
from rest_framework.decorators import detail_route

class UserViewSet(ModelViewSet):
    ...

    @detail_route(methods=['post'], permission_classes=[IsAdminOrIsSelf], url_name='change-password')
    def set_password(self, request, pk=None):
        ...