5

私はdjango rest-frameworkでアプリを書いています:私のviews.py:

class tagList(generics.ListCreateAPIView,APIView):

    model = tags
    serializer_class = getAllTagsDetailSerializer
    def get_queryset(self):
        print "q1"
        print self.request.QUERY_PARAMS.get('tag', None)
        print self.request.user
        print "q1"
        if tags.objects.filter(tag='burger')!= None:
             return tags.objects.filter(tag='burger')
        else:
            content = {'please move along': 'nothing to see here'}
            return Response(content, status=status.HTTP_404_NOT_FOUND)

クエリが None を返した場合にエラー ステータス コードを返したい。しかし、応答を設定しようとすると問題が発生し、エラーがスローされます:

Exception Type: TypeError
Exception Value:    
object of type 'Response' has no len()
Exception Location: /usr/local/lib/python2.7/dist-packages/django/core/paginator.py in _get_count, line 53

それ以外の場合、クエリ結果が Not None である場合は機能しています。Django rest-framework でステータス コードを設定するにはどうすればよいですか。

4

2 に答える 2

2

これを試すことができますか

model = tags # Model name
serializer_class = getAllTagsDetailSerializer # Call serializer

def get_queryset(self):
    key = self.request.QUERY_PARAMS.get('appKey', None)
    getTagName = self.request.QUERY_PARAMS.get('tagName')
    keyData = app.objects.filter(appKey=key).exists()    
    try:
        if keyData == True:
            return tags.objects.filter(tag=getTagName)
        else:
            raise exceptions.PermissionDenied
    except app.DoesNotExist:
        pass

私はそれがうまくいくと思います....

于 2013-05-16T05:40:02.260 に答える