Если при входе в систему имя пользователя или пароль недействительны, как вывести ошибку на страницу, не обновляя ее, Django
У меня есть всплывающее окно входа в систему и я хочу, чтобы после ввода неправильного имени пользователя или пароля появлялось сообщение об ошибке, как обычно "Username or password is incorrect", но после нажатия кнопки на сайте, он обновляется и мне нужно снова открыть всплывающее окно, чтобы увидеть ошибку, как я могу сделать так, чтобы сообщение об ошибке появлялось без обновления страницы.
Views.py
def main(request):
form = CreateUserForm()
if "register-btn" in request.POST:
....
elif "login-btn" in request.POST:
username = request.POST.get('username-log')
password = request.POST.get('password-log')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('/account')
else:
messages.info(request, 'Username or password is incorrect')
#here I don't know what to write for the purpose of appearing the
#error messages on the page without refreshing it
return render(request, 'accounts/main.html', context)
Main.html ( кратко )
<label>Your login</label>
<input name="username-log" class="form-control" type="text" placeholder="Enter your login">
<label>Password</label>
<input name="password-log" class="form-control" type="password" placeholder="Enter your password">
{% for message in messages %}
<p id="messages" class="xerr"> {{message}} </p>
{% endfor %}
<button name="login-btn" class="btn btn_100" type="submit">LOG IN</button>
Я вижу, что OP хочет информировать пользователей о том, что происходит, и решил использовать для этого фреймворк messages framework - это замечательно. Теперь возникает вопрос: "Как сделать это без обновления страницы?".
Как упоминает nigel239, придется использовать асинхронный JavaScript. Существуют различные статьи Q&As, которые объясняют, как отправлять формы асинхронно, например