2012-06-06 5 views
1

Я получаю сообщение об ошибке «Недостаток или недопустимый токен CSRF», хотя я считаю, что я включил правильный тег в шаблон. Ниже приведен вид и шаблон, который показывали эту ошибку:Как исправить ошибку проверки CSRF?

def contact(request): 
    if request.method == 'POST': 
     form = ContactForm(request.POST) 
     if form.is_valid(): 
      cd = form.cleaned_data 
      return HttpResponseRedirect('/contact/thanks/') 
    else: 
     form = ContactForm() 
    return render_to_response('reserve/templates/contact_form.html',{'form': form}) 

Шаблон:

<html> 
<head> 
    <title>Contact us</title> 
</head> 
<body> 
    <h1>Contact us</h1> 

    {% if form.errors %} 
     <p style="color: red;"> 
      Please correct the error{{ form.errors|pluralize }} below. 
     </p> 
    {% endif %} 

    <form action="" method="post"> 
    {% csrf_token %} 
     <table> 
      {{ form.as_p }} 
     </table> 
     <input type="submit" value="Submit"> 
    </form> 
</body> 
</html> 
+0

Если посмотреть исходный код HTML шаблонов вы видите маркер поле CSRF быть установлены? – Mikael

+0

Также убедитесь, что вы добавили промежуточное программное обеспечение в settings.py или используете декоратор @csrf_protect. – Mikael

+0

Проверьте это как использовать его в своем приложении: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#how-to-use-it – Mikael

ответ

2

Уведомление пункт 3 the instructions. Быстрый способ сделать это - заменить ваш звонок render_to_responserender(request, 'reserve/templates/contact_form.html',{'form': form}) (импортируйте его через from django.shortcuts import render).

0

Вы должны передать экземпляр контекста вашего render_to_response

from django.template import RequestContext 

return render_to_response('reserve/templates/contact_form.html', context_instance=RequestContext(request,{'form': form})) 
Смежные вопросы