在rest api

时间:2017-01-24 06:37:39

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

在我的python rest api应用程序中,我已经成功包含了django oauth2工具包,并且我在登录时获得了accessstoken。现在我必须编写一个api来获取当前登录用户及其组信息的详细信息。组权限。

我的urls.py

url(r'me', get_me),

我的serialzers.py

class UserGroupSerializer(serializers.ModelSerializer):
    permissions = serializers.SerializerMethodField(required=False)
    groups = serializers.SerializerMethodField(required=False)

    def get_groups(self, obj):
        group_list = []
        for group in obj.groups.all():
            group_list.append(group.name)
        return group_list


    def get_permissions(self, obj):
        permissions = []
        for group in obj.groups.all():
            group_permissions = group.permissions.all().values_list('codename', flat=True)
            for group_permission in group_permissions:
                permissions.append(group_permission)
        return permissions

    class Meta:
        model = get_user_model()
        exclude = ('password','user_permissions',)
        #fields = '__all__'

我的views.py

def get_me(request):
    user = request.user
    return {
       'user': UserGroupSerializer(user).data,
    }

当我打电话给这个api时,我收到以下错误,

  

view account.views.get_me未返回HttpResponse对象。它   返回无。

问题是什么?这是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

您必须为HttpResponse函数返回get_me或其他响应函数的值。

DRF执行此操作的方式:

from rest_framework.response import Response
from rest_framework import status
from rest_framework.decorators import api_view

@api_view(['GET'])
def my_funct(request):
        user = request.user
        return Response({'user': UserGroupSerializer(user).data}, status=status.HTTP_200_OK)