gpt4 book ai didi

django - 禁止(403)CSRF验证失败。请求中止

转载 作者:行者123 更新时间:2023-12-04 05:07:56 28 4
gpt4 key购买 nike

我正在制作一个登录表单的应用程序,但是当我运行我的应用程序并单击“登录”按钮时,将发生以下错误

禁止(403)
CSRF验证失败。请求中止。


view.py的代码如下:

from django.template import  loader
from django.shortcuts import render_to_response
from registration.models import Registration
from django.http import HttpResponse
from django.template import RequestContext
from django.shortcuts import redirect


def view_login(request,registration_id):
t = loader.get_template('registration/login.html')
try:
registration=Registration.objects.get(pk=registration_id)
except Registration.DoesNotExist:
return render_to_response("login.html",{"registration_id":registration_id})

def home(request,registration_id):
if request.method == "POST":
username = request.POST.get('user_name')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# success
return render('registration/main_page.html',{'registration_id':registration_id},context_instance=RequestContext(user))
else:
#user was not active
return redirect('q/',context_instance=RequestContext(user))
else:
# not a valid user
return redirect('q/',context_instance=RequestContext(user))
else:
# URL was accessed directly
return redirect('q/',context_instance=RequestContext(user))

最佳答案

您需要在表单中添加{% csrf_token %}
https://docs.djangoproject.com/en/2.2/ref/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

关于django - 禁止(403)CSRF验证失败。请求中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12174040/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com