2014-02-13 5 views
1

Я получаю сообщение об ошибке 405, оговаривая CSRF verification failed. Request aborted. CSRF cookie not set.Джанго возвращение 403 ошибки - "CSRF печенье не установлено"

Моего urls.py является:

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
from users.views import HandlerView 
admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^users/login$', HandlerView.as_view(), name='my-view'), 
    url(r'^users/add$', HandlerView.as_view(), name='my-view'), 
) 

и моей views.py является:

from django.shortcuts import render 
from django.http import HttpResponse 
from django.views.generic import View 

class HandlerView(View): 
    def get(self, request, *args, **kwargs): 
     return HttpResponse('Hello, World!') 

    def post(self, request, *args, **kwargs): 
     print "Hello world!" 
     return HttpResponse('Hello, World!') 

Выполнение curl, которое я вводил на моем терминале:

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d ' {"user" : "jeff", "password" : "pass1"} ' http://localhost:8000/users/add 

и терминал работает мой сервер возвращает:

[13/Feb/2014 00:38:06] "POST /users/add HTTP/1.1" 403 2282 

Я понимаю, что CSRF, но что это было бы для маркировки методом POST через терминал, когда Тереза ​​нет печенья правильно? Каким будет это средство?

ответ

2

Возможно, эта ошибка возникает, потому что вы можете включить защиту CSRF в настройках мультимедиа.

Если вам не нужна эта защита, вы можете установить вид как CSRF exempt. Вы можете просто использовать декоратор в представлении, или вы можете отключить его из настроек промежуточного программного обеспечения.

from django.views.decorators.csrf import csrf_exempt 
from django.http import HttpResponse 

@csrf_exempt 
def my_view(request): 
    return HttpResponse('Hello world') 
Смежные вопросы