【发布时间】: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中将任何表单传递给上下文,但您似乎正在渲染一个?