首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-Rest-框架AssertionError HTTPresponse期望值

Django-Rest-框架AssertionError HTTPresponse期望值
EN

Stack Overflow用户
提问于 2014-04-27 06:16:20
回答 4查看 44K关注 0票数 13

当我使用curl在终端上执行以下命令时

代码语言:javascript
复制
curl -X POST http://myuser:mypassword@myweb.com:8000/call/make-call/ -d "tutor=1&billed=1"

我得到以下错误

AssertionError at /call/作出调用/期望从视图返回ResponseHttpResponseHttpStreamingResponse,但收到了<type 'NoneType'>

我的views.py是

代码语言:javascript
复制
@api_view(['GET', 'POST'])
def startCall(request):

    if request.method == 'POST':

        serializer = startCallSerializer(data=request.DATA)

        if serializer.is_valid():

            serializer.save()

            return Response(serializer.data, status=status.HTTP_201_CREATED)

        else:

            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我的serializer.py是

代码语言:javascript
复制
class startCallSerializer(serializers.ModelSerializer):

    class Meta:
        model = call
        fields = ('tutor', 'billed', 'rate', 'opentok_sessionid')

我的urls.py是

代码语言:javascript
复制
urlpatterns = patterns(
    'api.views',
    url(r'^call/make-call/$','startCall', name='startCall'),
)
EN

回答 4

Stack Overflow用户

发布于 2014-09-05 11:50:14

该函数不会在"GET“请求中返回Response对象。也就是说,if request.method == 'POST'检查不通过。

代码语言:javascript
复制
@api_view(['GET', 'POST'])
def startCall(request):

    if request.method == 'POST':
        serializer = startCallSerializer(data=request.DATA)

        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
             return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    
    # Return Response instance if request method 
    # is not POST
    return Response({'key': 'value'}, status=status.HTTP_200_OK)
票数 17
EN

Stack Overflow用户

发布于 2018-01-30 12:54:37

只需加上

代码语言:javascript
复制
#Return this if request method is not POST
    return Response(json.dumps({'key': 'value'},default=json_util.default))

如果您在应用程序开发中没有内置错误代码。

我的完整代码:

代码语言:javascript
复制
@csrf_exempt
@api_view(['GET','POST'])
def uploadFiletotheYoutubeVideo(request):
    if request.method == 'POST': 
        file_obj = request.FILES['file']#this is how Django accepts the files uploaded. 
        print('The name of the file received is ')
        print(file_obj.name)
        posteddata = request.data
        print("the posted data is ")
        print(posteddata)
        response = {"uploadFiletotheYoutubeVideo" : "uploadFiletotheYoutubeVideo"}
        return Response(json.dumps(response, default=json_util.default))
    #Return this if request method is not POST
    return Response(json.dumps({'key': 'value'},default=json_util.default))
票数 0
EN

Stack Overflow用户

发布于 2020-02-13 17:16:19

像下面这样编辑视图应该有效

代码语言:javascript
复制
@api_view(['GET', 'POST'])
def startCall(request):
    if request.method == 'POST':
    serializer = startCallSerializer(data=request.data)
    data={}
    if serializer.is_valid():
        datas = serializer.save()
        data['tutor']=datas.tutor
        data['billed']=datas.billed
        data['rate']=datas.rate


    else:
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    return Response(data)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23320058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档