Jquery 使用Django Rest框架创建主干模型

Jquery 使用Django Rest框架创建主干模型,jquery,django-rest-framework,backbone-model,Jquery,Django Rest Framework,Backbone Model,我正在尝试使用Django rest框架创建一个带有rest api的新模型 这是我的序列化程序: class FooSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Foo 这是我的观点 @api_view(['POST', 'GET','DELETE','OPTIONS']) def foos(request): """ API endpoint to cr

我正在尝试使用Django rest框架创建一个带有rest api的新模型

这是我的序列化程序:

class FooSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Foo
这是我的观点

@api_view(['POST', 'GET','DELETE','OPTIONS'])
def foos(request):
    """
    API endpoint to create, delete and get foos
    """
    authentication_classes = (authentication.TokenAuthentication,)
    permission_classes = (permissions.IsAuthenticated,)

    model = Foo
    serializer_class = FooSerializer

    if request.method == "POST":
        data = JSONParser().parse(request)
        serializer = FooSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return JSONResponse(serializer.data, status=201)
        else:
            return JSONResponse(serializer.errors, status=400)

    return Response(serializer.data)
在我看来:

       foo = new Foo
            name:'Bla di bla di'
        foo.save()
除了失败的选项外,没有任何其他选项

OPTIONS http://127.0.0.1:8080/api/foo/  

我不知道该怎么办,如果我省略了帖子的contentType:“application/json”部分(在手动发布时),就不会发生这种情况

它在我的终端中与CURL一起工作

在我的chrome Inspector>网络中,我得到以下信息:

Request URL:http://127.0.0.1:8080/api/foo/
Request Headersview source
Access-Control-Request-Headers:accept, origin, authorization, content-type
Access-Control-Request-Method:POST
Cache-Control:no-cache
Origin:http://localhost:8000
Pragma:no-cache
请求,而响应为空

编辑

我用RESTAPI打开了服务器,同样的事情也发生了!所以这告诉我一件事,它与服务器无关。一定是AJAX的东西


我完全搞糊涂了:-(

当进行跨域请求时,在发布帖子之前进行选项调用是正常的

如果发生期权认购,但没有后续POST,最有可能的原因是CORs失败

检查服务器响应-它是否返回正确的标头

您需要3个:

“访问控制允许来源” “访问控制允许方法”
“访问控制允许标头”

这些必须符合你的要求

有关快速修复方法,请参见此答案:


或者此页面提供背景+完整解释:

您可能希望在此基础上展开:“帖子突然失败,选项失败”-你的意思不太清楚。我的意思是,选项失败,然后停止。没有帖子。如果你没有建设性的评论,为什么你要评论?我是在尝试建设性。不清楚你看到了什么行为,或者你是否在客户端或服务器端收到错误。