3

我对 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 错误。不知道这意味着什么,但我想我会提到它。

4

0 回答 0