2016-07-01 9 views
0

Я просматривал похожие вопросы, но ничего не похоже на мою ситуацию.Запрещено (токен CSRF отсутствует или неверен.)

Почему этот код отлично работает:

<form action="/signup/" method="post"> 
{% csrf_token %} 
[FORM] 
</form> 

но

<form id="signup-form"> 
    {% csrf_token %} 
[FORM] 
    </form> 

<script type="text/javascript"> 
$(function() { 
$(".submit-signup").on("click", function() { 
    var user = $("#signup_form").serialize(); 
    console.log(user); 
    $.post("/signup/", user, function() { 
    }); 
}); 
}); 
</script> 

не работает?

Вот регистрация в views.py:

@requires_csrf_token 
def signup(request): 
[STUFF] 

return render(request, 'signup.html', {[STUFF}}) 

Что еще я могу предоставить, что бы помочь? В основном я пытаюсь взять страницу и превратить ее в модальный, который делает то же самое.

Спасибо!

+0

Это считается как AJAX POST называют https://docs.djangoproject.com/en/dev/ref/csrf/# ajax – Gocht

ответ

1

вы делаете Аякса после вызова, за которые нужно дать CSRF токен также:

$.post("/signup/", { 
    user: user, 
    csrfmiddlewaretoken: '{{ csrf_token }}' 
}, function() { 
    // success todo 
}, function(){ 
    // fail todo 
}); 
+0

Спасибо! Теперь я получаю «неожиданный токен:» в строке csrfmiddlewaretoken, и ничего еще не работает, но у меня была начальная ошибка: – ballardjw2

+0

@ ballardjw2 вы можете вставить точное сообщение об ошибке, пожалуйста? – doniyor

+0

"(индекс): 319 Uncaught SyntaxError: Неожиданный токен:« Строка 319 - это строка csrfmiddlewaretoken. – ballardjw2

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