在django rest-framework中返回响应 [英] return response in django rest-framework

查看:176
本文介绍了在django rest-framework中返回响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在django休息框架中编写一个应用程序:
我的views.py:

  class tagList通用代码:

model = tags
serializer_class = getAllTagsDetailSerializer
def get_queryset(self):
printq1
print self。 request.QUERY_PARAMS.get('tag',None)
print self.request.user
printq1
如果tags.objects.filter(tag ='burger')!= None :
return tags.objects.filter(tag ='burger')
else:
content = {'请移动':'没有什么可以看到这里'}
返回响应(content,status = status.HTTP_404_NOT_FOUND)

如果查询返回None,我想返回错误状态代码。
但是如果我尝试设置响应它抛出错误,但是问题:

 异常类型:TypeError 
异常值:
类型为Response的对象没有len()
异常位置:/usr/local/lib/python2.7/dist-packages/django/core/paginator.py在_get_count中,行53

否则如果查询结果不是无,它正在工作。
我如何在Django休息框架上设置状态代码。

解决方案

你可以尝试这个

  model = tags#模型名称
serializer_class = getAllTagsDetailSerializer#调用序列化

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:
如果keyData == True:
return tags.objects.filter(tag = getTagName)
else:
raise exception .PermissionDenied
除了app.DoesNotExist:
pass

我认为它会工作....


I am writing an app in django rest-framework: My 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)

I want to return error status code if query returns None. But the problem if i try to set Response it throws error:

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

Else if query result is Not None it is working. How can i set status code on Django rest-framework.

解决方案

Can you try this

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

I think it will work....

这篇关于在django rest-framework中返回响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆