【问题标题】:CSRF verification failed request aborted in DjangoCSRF 验证失败请求在 Django 中中止
【发布时间】:2021-04-24 00:03:19
【问题描述】:

我在尝试登录或创建帐户时遇到一个问题,它显示 csrf 令牌错误。当我通过manage.py runserver从我的电脑本地运行我的django项目时,一切正常 我将我的项目上传到 pythonanywhere 并在 django 中收到“CSRF 验证失败请求中止”错误。

这是我的:

login.html 文件

{% load crispy_forms_tags %}
{% block content %}
    <div class="w-50 mx-auto">
        <h1 class="mt-5 text-center">Login</h1>
        {% if description %}
            <p class="lead">Login to your account/p>
        {% endif %}
        <form method="post">
            {% csrf_token %}
            {{ form|crispy }}
            <div class="text-center">
                <input type="submit" class="btn btn-warning btn-lg">
                <p></p>
                <a class="btn btn-warning btn-lg" href={% url "password-reset" %}>Password reset</a>
            </div>
        </form>
    </div>

{% endblock %} 

settings.py 中的中间件

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

forms.py 文件

class CustomUserCreationForm(UserCreationForm):
    email = forms.EmailField(max_length=200, help_text='Required')

    class Meta:
        model = CustomUser
        fields = ('username', 'email', 'password1', 'password2')


class CustomUserChangeForm(UserChangeForm):
    def __init__(self, *args, **kwargs):
        super(CustomUserChangeForm, self).__init__(*args, **kwargs)
        del self.fields['password']

    class Meta:
        model = CustomUser
        fields = ('username', 'email')


class PasswordForm(ModelForm):
    class Meta:
        model = StoredPasswords
        fields = ['account']

和views.py文件

def home(request):
    return render(request, 'home.html', context={'title': 'Welcome to KPM'})

def about(request):
    return render(request, 'about.html', context={'title': 'about'})

def login(request):
    return render(request, 'login.html')

也许是因为我错误地使用了酥脆的形式? 提前谢谢你

【问题讨论】:

  • 您是否在问题中添加了您的实际观点?我没有看到在视图login 中将任何表单传递给上下文,但您似乎正在渲染一个?

标签: python django


【解决方案1】:

问题出在我的浏览器上,我需要启用所有 cookie,不需要登录视图。

【讨论】:

    猜你喜欢
    • 2012-12-07
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多