2013-05-02 152 views
0

我正在尝试使用Django Rest Framework创建一个具有其余api的新模型。Backbone使用Django Rest Framework创建模型

这是我的串行:

class FooSerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model = Foo 

这是我view.py

@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失败,没有POST。

failing OPTIONS

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

我不知道该怎么做,这不会发生,如果我离开了的contentType:该职位的“应用/ JSON”部分(做人工职位时)

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

在我的铬督察>网络我得到这个:

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 

请求和响应是空的。

编辑

我把服务器与REST API和同样的事情发生了!所以这给我带来了一件事,它与服务器无关。必须是AJAX的东西。

林完全混淆 :-(

+0

你可能想在此展开:“的帖子突然失败,并在OPTIONS失败” - 这不是非常清楚你的意思。 – 2013-05-02 13:07:16

+0

我的意思是选项失败,并停止。没有帖子 – Harry 2013-05-02 13:12:03

+0

为什么你评论如果你没有建设性的评论? – Harry 2013-05-02 18:47:27

回答

1

在做跨域请求,这是正常不过的事情了OPTIONS做一个POST之前调用。

如果OPTIONS调用发生,但没有POST如下,最可能的原因是CORS失败

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

你需要3:?

“访问控制允许来源” 的访问控制允许的方法“
的访问控制允许报头'

这些都要你的要求相匹配。

看到这个答案的快速修复:https://stackoverflow.com/a/3520073

还是这个页面背景+充分的解释:http://www.html5rocks.com/en/tutorials/cors/

相关问题