我如何制作Django REST框架/我/电话? [英] How can I make a Django REST framework /me/ call?

查看:140
本文介绍了我如何制作Django REST框架/我/电话?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个 ViewSet

class ProfileViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows a user's profile to be viewed or edited.
    """
    permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly)
    queryset = Profile.objects.all()
    serializer_class = ProfileSerializer

    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

...和 HyperlinkedModelSerializer

class ProfileSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Profile
        read_only_fields = ('user',)

我有我的 urls.py 设置为:

I have my urls.py set up as:

router.register(r'profiles', api.ProfileViewSet, base_name='profile')

这让我访问例如

我想在我的API上设置一个新的端点(类似于以 / api / profile / me / 的Facebook API的 / me / 调用)访问当前用户的个人资料 - 如何使用Django REST框架来实现?

I want to set up a new endpoint on my API (similar to the Facebook API's /me/ call) at /api/profile/me/ to access the current user's profile - how can I do this with Django REST Framework?

推荐答案

您可以在视图类中使用 list_route 装饰器,如:

You could create a new method in your view class using the list_route decorator, like:

class ProfileViewSet(viewsets.ModelViewSet):

    @list_route()
    def me(self, request, *args, **kwargs):
        # assumes the user is authenticated, handle this according your needs
        user_id = request.user.id
        return self.retrieve(request, user_id)

一个href =http://www.django-rest-framework.org/api-guide/routers/ =nofollow>此文档有关 @list_route的更多信息

See the docs on this for more info on @list_route

我希望这有帮助!

这篇关于我如何制作Django REST框架/我/电话?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆