【问题标题】:Is there a way to prettify name of detail_route when using url_path?使用 url_path 时,有没有办法美化 detail_route 的名称?
【发布时间】:2017-03-16 17:40:45
【问题描述】:

项目使用 Django REST 框架。这是详细视图之一:

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

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

打开浏览器时,我看到这个 url 指定如下:

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

正如您所见,这个视图的名称看起来很糟糕 - 有没有办法让它更漂亮?

【问题讨论】:

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


    【解决方案1】:

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

    例如,如果您想将我们自定义操作的名称更改为“用户更改密码”,您可以这样写:

    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):
            ...
    

    【讨论】:

      猜你喜欢
      • 2016-10-17
      • 2018-11-01
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多