google_online
@google_online
My morning begins with coffee and Twitter.

Как сделать валидацию форм в модальном окне?

Я делаю авторизацию пользователя в модальном окне. Авторизация работает, но если пользователь вводит не существующий логин или неправильный пароль, модальное окно скрывается, но в нём(в модальном окне) если его сного вызвать то появляется сообщение о том что пароль или логин были неправильны. Как мне сделать чтобы оно не скрывалось после неправильного ввода?

views.py
class LoginFormView(FormView):
    form_class = AuthenticationForm
    template_name = 'fighter/index.html'
    success_url = "/profile"

    def form_valid(self, form):
        self.user = form.get_user()
        login(self.request, self.user)
        return super(LoginFormView, self).form_valid(form)

index.html
<div id="modal_form"><!-- Сaмo oкнo --> 
        <div id="stupidForm">ВХОД</div>
      <span id="modal_close">X</span> <!-- Кнoпкa зaкрыть --> 

      <form id="loginform" action="" method="POST">{% csrf_token %}
          <br><br><br>
            {{ form.as_p }}
          <input type="submit" name="login" value="ВОЙТИ">
      </form>
    </div>
    <div id="overlay"></div><!-- Пoдлoжкa -->

modal_window.js
$(document).ready(function() {
	$('a#go').click( function(event){ // клик пo ссылки с id="go"
		event.preventDefault(); 
		$('#overlay').fadeIn(400, 
		 	function(){ 
				$('#modal_form') 
					.css('display', 'block') 
					.animate({opacity: 1, top: '50%'}, 200); 
		});
	});
	/* Зaкрытие мoдaльнoгo oкнa*/
	$('#modal_close, #overlay').click( function(){ 
		$('#modal_form')
			.animate({opacity: 0, top: '45%'}, 200,
				function(){ // пoсле aнимaции
					$(this).css('display', 'none'); 
					$('#overlay').fadeOut(400); 
				}
			);
	});
});
  • Вопрос задан
  • 624 просмотра
Пригласить эксперта
Ответы на вопрос 1
@deliro
Форму посылай AJAX'ом, вместо скрытия ставь какой-то спиннер и жди ответа. И если ответ положительный — fadeOut и перезагружай текущий урл. Ошибки из джанги посылай JsonResponse(form.errors).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы