sau*_*atz 3 django django-csrf
我试图通过"Django Book"来学习django,我遇到了CSRF保护问题.我在这里找到了很多建议,但似乎没有一个适合我.
使用Chrome我收到消息:CSRF token missing or incorrect.
使用Internet Explorer我收到消息:CSRF cookie not set.
如果我'django.middleware.csrf.CsrfViewMiddleware'在settings.py中注释掉,一切似乎都有效(虽然当然没有任何东西被邮寄到虚假的地址.)我已经尝试csrf_protect在我的视图上放置一个装饰器,但它没有帮助.我也尝试过对这个调用进行评论,但send_mail我仍然遇到CSRF失败,显然这是导致问题的ContactForm.
(我正在使用django 1.4.1.)
我需要做什么?
from 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', 'noreply@example.com'),
['siteowner@example.com'],
)
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")
Run Code Online (Sandbox Code Playgroud)
from django import forms
class ContactForm(forms.Form):
subject = forms.CharField()
email = forms.EmailField(required=False)
message = forms.CharField()
Run Code Online (Sandbox Code Playgroud)
<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">
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Submit">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
837 次 |
| 最近记录: |