2013-05-02 2 views
0

Я пытаюсь создать новую модель с отдыхом api с помощью Django Rest Framework.Магистраль Создать модель с 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() 

отмечая происходит, за исключением опции, которые не в состоянии , нет POST.

failing OPTIONS

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

Я не знаю, что делать, это не произойдет, если я оставлю вне CONTENTTYPE: «применение/JSON» часть поста (при выполнении ручной пост)

Он работает с CURL в моем терминале.

В моем хромированном инспекторе> Network Я получаю:

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 

запроса и ответ пуст.

EDIT

Я повернулся сервера с REST API и точно то же самое происходит! Таким образом, это говорит мне одно: это не связано с сервером. Должен быть материал AJAX.

Im полностью запутался :-(

+0

Вы могли бы хотеть расширить это: «Пост внезапно терпит неудачу с OPTIONS провал» - это не очень ясно, что вы имеете в виду. –

+0

Я имею ввиду, что ОПЦИИ не работают, и он останавливается. Нет сообщений, сделанных – Harry

+0

Почему вы комментируете, если у вас нет конструктивных комментариев? – Harry

ответ

1

При выполнении запроса междоменная, это нормально делать Парам.вызовов перед выполнением POST.

Если Парам.вызовов происходит, но не POST не следует , скорее всего, причина является неспособностью Корса

Проверьте ответ сервера - это его возвращение правильных заголовков

Вам нужно 3:.?

'Access-Control-Allow-Origin' 'Access-Control-Allow-методы'
'Access-Control-Allow-Headers'

Они должны соответствовать вашему запросу.

Смотрите этот ответ для быстрого исправления: https://stackoverflow.com/a/3520073

Или эту страницу для фона + полное объяснение: http://www.html5rocks.com/en/tutorials/cors/

Смежные вопросы