我有一个登录表单,如果用户输入了无效的用户名或密码,页面将刷新并删除他们输入的用户名值。我想要这样,以便用户名字段在提交失败时不会为空。
views.py
def login_page(request):
if request.user.is_authenticated:
return redirect('dashboard:dashboard')
elif request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('dashboard:dashboard')
else:
messages.info(request, 'Username or Password is invalid.')
return render(request, 'main/login.html', {})
login.html:
<form id="login-form" action="" method="post" role="form">
{% csrf_token %}
<div class="form-group">
<input type="text" name="username" id="username" tabindex="1" class="form-control" placeholder="Username" value="">
</div>
<div class="form-group">
<input type="password" name="password" id="password" tabindex="2" class="form-control" placeholder="Password">
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-6 center" style="border-radius: 16px;">
<input type="submit" name="login-submit" id="login-submit" tabindex="5" class="form-control btn btn-login" value="Login">
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-lg-12">
<div class="center">
<a href="#" tabindex="5" class="forgot-password">Forgot Password?</a>
</div>
</div>
</div>
</div>
</form>
答案 0 :(得分:1)
所有有关在上下文中传递用户名的事情。
尝试一下:
views.py
def login_page(request):
context = {}
if request.user.is_authenticated:
return redirect('dashboard:dashboard')
elif request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('dashboard:dashboard')
else:
context["username"] = username
messages.info(request, 'Username or Password is invalid.')
return render(request, 'main/login.html', context)
login.html:
...
<input type="text" name="username" id="username" tabindex="1" class="form-control" placeholder="Username" value="{{ username }}">
...