Я пытаюсь получить модальное всплывающее окно для входа в систему, но в итоге мне пришлось изменить представление формы класса на html-форму и представление на основе функций, чтобы оно работало на каждой странице.
Теперь я застрял в том, как очистить данные, которые я получаю от логина (адрес электронной почты, пароль), так как я не могу использовать cleaned_data ().
Я надеялся использовать form.valid (), но с HTML-формой я не уверен, как на него ссылаться.
вид:
def login2(request):
if request.method == 'POST':
email= str(request.POST['u'])
password = str(request.POST['p'])
user = authenticate(username=email, password=password)
if user is not None:
auth_login(request=request, user=user)
return HttpResponseRedirect(reverse('home'))
else:
messages.error(request, "You have entered an invalid username or password")
return redirect("home")
Форма:
<div class="modal fade" id="login-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" align="center">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
</button>
</div>
<div id="div-forms">
<form id="login-form" action="{% url 'login2' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="modal-body">
<div id="div-login-msg" style="padding-bottom: 10px"><div id="icon-login-msg" class="glyphicon glyphicon-chevron-right"></div>
<span id="text-login-msg">Please enter your email and password.</span>
</div>
<div style="padding-bottom: 20px">
<input id="login_username" name = 'u' class="form-control" type="text" placeholder="Email" required>
</div>
<input id="login_password" name = 'p' class="form-control" type="password" placeholder="Password" required>
</div>
<div class="modal-footer">
<div class="container" align="center">
<button style="width: auto" type="submit" class="btn btn-primary btn-lg btn-block">Login</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
Спасибо за помощь.