CSRF Защита в Джанго 1.4
Я пытаюсь научиться джанго, работая через "Книга Джанго ", и я'У меня возникли проблемы с защитой CSRF. Я'Мы нашли много предложений здесь, но ни одно из них не работает для меня.
Используя Chrome, я получаю сообщение:CSRF token missing or incorrect
Используя Internet Explorer, я получаю сообщение:CSRF cookie not set
Если я закомментирую'django.middleware.csrf.CsrfViewMiddleware'
в settings.py кажется, что все работает (хотя, конечно, на поддельный адрес ничего не отправляется).мы пытались положитьcsrf_protect
декоратор на мой взгляд, но это не такТ помочь. Я'мы также пытались закомментироватьsend_mail
и я все еще получаю ошибку CSRF, так что, видимо, этоs ContactForm, который вызывает проблему.
(Я'м с использованием django 1.4.1.)
Что мне нужно сделать?
views.pyfrom django.shortcuts import render_to_response
from django.http import HttpResponse, HttpResponseRedirect
from contact.forms import ContactForm
from django.template import RequestContext
from django.core.mail import send_mail
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
send_mail(
cd['subject'],
cd['message'],
cd.get('email', '[email protected]'),
['[email protected]'],
)
return HttpResponseRedirect('/contact/thanks/')
else:
form = ContactForm()
return render_to_response('contact_form.html', {'form': form}, context_instance=RequestContext(request))
def thanks(request):
return HttpResponse("Thanks for the feedback")
forms.pyfrom django import forms
class ContactForm(forms.Form):
subject = forms.CharField()
email = forms.EmailField(required=False)
message = forms.CharField()
contact_form.html
Contact us
Contact us
{% if form.errors %}
<p style="color: red;">
Please correct the error{{ form.errors|pluralize }} below.
</p>
{% endif %}
{{ form.as_table }}