我如何制作Django REST框架/我/电话? [英] How can I make a Django REST framework /me/ call?
本文介绍了我如何制作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屋!
查看全文