@mashincode

Как принимать пароли в Django Ajax форме, ошибка отображения?

Я использую Django forms и Jquery, у меня sign-up форма, которая запрашивает email, пароли, имя, фамилию, номер телефона.

В js прописано, что каждый раз, когда какой либо из инпутов меняется, я отправляю форму на django для последующей валидации

function send_ajax(){
  var form_id = $("#ajax_signup_form");

  $.ajax({
    url: "{% url 'signup' %}",
    type: "POST",
    data: form_id.serialize(),
    async: true,
    header: {'X-CSRFToken': '{{ csrf_token }}'},
    success: function(data) {
       var success = data['success'];
       if (success) {
        console.log('Success in response ')
       } else {
          form_id.replaceWith(data['html']);
       }
    },
    error: function (data) {
      console.log('Error in response')
    }
  });
}

$(document).on('change', $(".ajax_signup_element") ,function(){
  send_ajax();
})


Вот так ее принимаю:

...

if request.method == 'POST' and request.is_ajax():
  form = SignUpForm(request.POST)
  resp = {}

  if form.is_valid():
      form.save()
  else:
      resp['success'] = False
      csrf_context = {}
      csrf_context.update(csrf(request))
      form_html = render_crispy_form(form, context=csrf_context)
      resp['html'] = form_html
  return HttpResponse(json.dumps(resp), content_type='application/json')
...


Получается форма возвращается назад и отображает ошибки, оставляя значения в предыдущих полях такими же введенными, однако пароли, каждый раз убираються, как сделать так, что бы пароли тоже заполнялись?

609e72db946dd887004222.png

609e72e4b5f92074615596.png
  • Вопрос задан
  • 30 просмотров
Решения вопроса 1
dima9595
@dima9595
Junior PHP
Как вариант - сохраняйте в другую переменную и/или возращайте дублированную переменную и далее ёё подставляйте в нужное поле.
То ли сам фреймворк, то ли браузер, (точно не помню, вроде первое) специально защищает от таких манипуляций. Так что дерзайте, тестируйте.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы