Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在rest api中获取登录用户详细信息和组权限_Python_Django_Python 2.7_Django Rest Framework_Django Oauth - Fatal编程技术网

Python 在rest api中获取登录用户详细信息和组权限

Python 在rest api中获取登录用户详细信息和组权限,python,django,python-2.7,django-rest-framework,django-oauth,Python,Django,Python 2.7,Django Rest Framework,Django Oauth,在我的python rest api应用程序中,我成功地包含了django oauth2工具包,并且在登录时获得了accesstoken。现在我必须编写一个api来获取当前登录用户的详细信息及其组信息和组权限 我的URL.py url(r'me', get_me), 我的serializers.py class UserGroupSerializer(serializers.ModelSerializer): permissions = serializers.SerializerMe

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

我的URL.py

url(r'me', get_me),
我的serializers.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__'
我的观点

def get_me(request):
    user = request.user
    return {
       'user': UserGroupSerializer(user).data,
    }
当我调用这个api时,我得到以下错误:

view account.views.get_me未返回HttpResponse对象。信息技术 而没有返回任何值


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

您必须使用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)

那不行。在/api/v1/me处显示此错误断言错误。未在ResponseEyes上设置已接受的\u呈现程序。成功了。谢谢这是获取用户详细信息和权限的最佳方式吗?组和权限作为模型保存在数据库中。我将首先创建组和权限序列化程序,然后将这些序列化程序添加到UserGroupSerializer中。最后,您将看到JSON数组中嵌套的组和权限作为响应。