2013-05-02 519 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/

相關問題