Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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 ContentNotRenderError:必须先呈现响应内容,然后才能对其进行迭代_Python_Django - Fatal编程技术网

Python ContentNotRenderError:必须先呈现响应内容,然后才能对其进行迭代

Python ContentNotRenderError:必须先呈现响应内容,然后才能对其进行迭代,python,django,Python,Django,返回自定义响应时,我遇到了渲染错误。 我使用的是django 1.8和DRF 2.4.8 观点是 class UserList(generics.ListAPIView): # queryset = User.objects.all() serializer_class = UserSerializer def get_queryset(self): is_staff = self.request.GET.get('is_staff', None) is_superuser =

返回自定义响应时,我遇到了渲染错误。 我使用的是django 1.8和DRF 2.4.8

观点是

class UserList(generics.ListAPIView):
# queryset = User.objects.all()
serializer_class = UserSerializer

def get_queryset(self):
    is_staff = self.request.GET.get('is_staff', None)
    is_superuser = self.request.GET.get('is_superuser', None)
    is_admin = self.request.GET.get('is_admin', None)
    company = self.request.GET.get('company', None)
    userdetails = UserData(self.request.user).userdetails()
    print(userdetails.get('usertype'))
    query1 = query = Q()
    if is_staff:
        query1.add(Q(is_staff=is_staff), Q.AND)
    if is_superuser:
        query1.add(Q(is_superuser=is_superuser), Q.AND)
    if is_admin:
        query = Q(is_admin=is_admin)
    if company:
        query.add(Q(company__name=company), Q.AND)
    if userdetails.get('usertype') is 'superuser':
        if is_admin or company:
            profile_list = Profile.objects.filter(query).values_list('user_id', flat=True)
            user_list = User.objects.filter(id__in=profile_list)
            return user_list.filter(query1)
        else:
            return User.objects.filter(query1)
    elif userdetails.get('usertype') in ['staff', 'admin']:
        up = Profile.objects.get(user=self.request.user)
        profile_list = Profile.objects.filter(company=up.company)  # .values_list('user_id', flat=True)
        user_list = profile_list.filter(query).values_list('user_id', flat=True) if is_admin or company else \
            profile_list.values_list('user_id', flat=True)
        final_list = User.objects.filter(id__in=user_list)
        return final_list.filter(query1)
    else:
        return Response(data={"error": ["You don't have enough permission."]}, status=status.HTTP_400_BAD_REQUEST)
当从最后一部分返回响应时,我得到了错误?
解决办法是什么?
Response()
中有什么错误?

get\u queryset
应该返回
queryset
,而不是
响应
。 然而,你仍然可以通过提出一个:

from rest_framework.exceptions import ValidationError

def get_queryset(self):
    ...
    else:
        raise ValidationError({"error": ["You don't have enough permission."]})