2013-05-02 4 views
0

Django Rest Framework를 사용하여 나머지 API로 새 모델을 만들려고합니다.백본 Django Rest Framework로 모델 만들기

 foo = new Foo 
      name:'Bla di bla di' 
     foo.save() 

주목이 옵션이 실패하는 것을 제외하고는 일이 내 백본보기에 그런 내 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) 

입니다

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

:

내 시리얼입니다 POST가 없습니다. 게시물의 "응용 프로그램/JSON"부분 (수동 게시물을 할 때)

: 나는이의 contentType을 떠날 경우,이 발생하지 않습니다를 어떻게 해야할지 잘 모릅니다

failing OPTIONS

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

그것은 터미널에서 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 

요청 및 응답이 비어 : 내 크롬 Inspector에서

은> 네트워크 나는이 얻을. 나는 나머지 API와 똑같은 일이 발생하여 서버의 상태

편집! 따라서 이것은 서버와 관련이없는 한 가지 일입니다. AJAX가되어야합니다.

+0

당신이에 확장 할 수 있습니다는 "포스트 갑자기 옵션은 실패 실패"- 그렇지 않아 무슨 뜻인지 분명히해라. –

+0

OPTIONS이 실패하고 중지됩니다. 작성한 게시물이 없습니다 – Harry

+0

건설적인 코멘트가없는 이유는 무엇입니까? – Harry

답변

1

크로스 도메인 요청을하고, 그것을 할 정상

임 완전히 혼란에 :-(옵션은

옵션이 발생 호출합니다. 게시물을하기 전에 호출하지만 POST는 다음과 없습니다 의 원인은 상시 관측소의 실패

는 서버 응답을 확인 - 올바른 헤더를 반환

당신은 3이 필요합니다.?

,

'액세스 제어 - - 원산지 허용' '액세스 제어가-허용-방법'
'액세스 제어 - 허용 - 헤더'

이 요청을 일치해야합니다.

빠른 수정이 대답을 참조하십시오 : https://stackoverflow.com/a/3520073

또는 배경 + 자세한 설명이 페이지 : http://www.html5rocks.com/en/tutorials/cors/