[英]Forbidden (403) CSRF verification failed. Request aborted. login page not working
我在创建登录页面时被卡住,并收到诸如“禁止 (403) CSRF 验证失败。请求中止”之类的错误。 请帮我解决这个问题
视图.py
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from users.forms import UserRegisterForm
# Create your views here.
def register(request):
if request.method=="POST":
form=UserRegisterForm(request.POST)
if form.is_valid():
form.save()
username=form.cleaned_data.get('username')
messages.success(request, f"Account created for {username}")
return redirect('app1-home')
else:
form=UserRegisterForm()
return render(request, "users/register.html",{"form":form})
网址.py
from django.contrib import admin
from django.urls import include, path
from users import views as user_views
from django.contrib.auth import views as auth_views
from app1 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('app1.urls')),
path('register/', user_views.register, name='register'),
path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),
表单.py
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class UserRegisterForm(UserCreationForm):
email=forms.EmailField()
class Meta:
model=User
fields=["username", "email", "password1", "password2"]
**login.html**
{% extends "app1/base.html" %}
{% load crispy_forms_tags %}
{% load staticfiles %}
{% block content %}
<div class="content-section">
<form method="POST" >
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Login</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Login </button>
</div>
</form>
<div class="border-top pt-3">
<small class="text-muted">
Sign Up Here? <a class="ml-2" href="{%url "register" %}">Sign Up</a>
</small>
</div>
</div>
{% endblock content %}
在settings.py文件中,我曾经写过
REDIRECT_LOGIN_URL = 'app1-home'
我正在创建一个包含登录、注销和注册的博客。 直到注册我在登录页面后成功它不会重定向到索引页面
您需要在表单中添加以下代码片段,以在 Django 表单中启用 csrf 验证,请参见此处
就像下面的代码:
<form>
{% csrf_token %}
<anything_else>
</form>
此外,每次使用render_to_response
都必须使用 RequestContext(request) :
return render_to_response("login.html",
{"registration_id":registration_id},
context_instance=RequestContext(request))
并且您必须同时导入身份验证和登录:
from django.contrib.auth import authenticate, login
我希望这会有所帮助...谢谢:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.