我对 Django 还很陌生,并且在这里提出了类似的问题以及谷歌结果的页面和页面,但还没有找到解决方法!
我的网站上有一个使用 CSRF 验证的登录表单。虽然我在 PC/Windows 和 Android 手机和平板电脑上没有任何问题,但在尝试登录iPhone 和 Mac 电脑时收到以下错误:
禁止 (403)
CSRF 验证失败。请求中止。
更多信息可通过 DEBUG=True 获得。
尽管似乎有一些常见问题可以提供快速修复,但我相信我已经涵盖了所有基础。再说一次,正如我之前提到的,我不是 Django 专家。我的设置如下:
设置.py
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
视图.py
def default(request):
if request.user.is_anonymous():
return HttpResponseRedirect(reverse('auth_login'))
try:
request.user.voter
except Voter.DoesNotExist:
return render_to_response('main/profile.html', {'form': form},
context_instance=RequestContext(request))
return render_to_response('main/ballot.html', {'form': form},
context_instance=RequestContext(request))
登录.html
<form action="" method="post" id="authentication_form" class="uniForm">
{% csrf_token %}
{{ form|as_uni_form }}
<div class="buttonHolder">
<input type="submit" value="Log in" class="primaryAction" />
</div>
</form>
作为旁注,将 'django.middleware.csrf.CsrfResponseMiddleware' 添加到我的 setting.py 会破坏我的服务器并导致 500 错误。不知道这意味着什么,但我想我会提到它。