我有一个登录屏幕,在成功进行身份验证后,它应该在同一基本 URL 上显示用户详细信息,这些天它一直工作得很好,突然间它抛出 302 响应代码HTTP POST /login/ 302 [0.60, 127.0.0.1:53864]
当输入正确的用户名和密码时,不会启动重定向,它会永远保持加载。
更奇怪的是,当我重新加载同一选项卡或打开新选项卡时,它会正确登录并显示适当的详细信息。没有进行与登录功能相关的更改,我最近所做的唯一更改是添加重设密码与此无关的功能。
用户登录
def user_login(request):
field = None
if request.method == "POST":
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username,password=password)
try:
field = UserModel.objects.get(user__username=username)
if user:
if user.is_active:
login(request,user)
return HttpResponseRedirect(reverse('index'))
else:
messages.error(request,'username or password not correct')
return HttpResponseRedirect('../')
else:
print("Error logging in{}".format(password))
messages.error(request,'Invalid username/password combination')
return HttpResponseRedirect('../')
except Exception:
#return HttpResponse("ACCOUNT NOT ACTIVE!!!")
messages.error(request,'Entered username does not belong to any account')
return HttpResponseRedirect('../')
else:
return render(request,'app/login.html',{})
urls.py
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^$',views.IndexView.as_view(),name='index'),
url(r'login/',views.user_login,name='login'),]
目的:在同一基本 URL(127.0.0.1:8000) 上显示登录和用户详细信息(登录视图),即如果用户登录,则显示用户详细信息,否则显示登录表单
索引视图
class IndexView(TemplateView):
template_name = 'app/index.html'
def get_context_data(self,**kwargs):
context = super().get_context_data(**kwargs)
if self.request.user.is_authenticated:
today = date.today()
print(today)
context['products'] =ProductModel.objects.filter(usr=self.request.user)
print("LOGGED IN")
return context
索引.html
{% extends 'app/base.html' %}
{%block title %}
<title>TITLE</title>
{% endblock %}
{%block body %}
{% if user.is_authenticated %}
{% include 'app/header.html' %}
<div class="container">
<h1>Welcome {{user.username}}</h1>
{% else %}
<!--LOGIN FORM HERE-->
{% endif %}
{% endblock %}
这些天一直运行没有任何问题,不知道是什么原因造成的。请提出解决此问题的建议。
谢谢。