@MrCute
Студент

Как отобразить валидные поля на форме после проверки валидации?

Приветствую всех.

Делаю форму регистрации на Django, как мне сделать так, чтобы после перезагрузки страницы, когда выводятся ошибки, валидные поля оставались на форме.

forms.py
def signup(request):

    if request.method == 'GET':

        signup_fm = SignUpForm()

        return render(request, 'core/registration.html', context={'form': signup_fm})

    if request.method == 'POST':

        signup_fm = SignUpForm(request.POST)

        if signup_fm.is_valid():

            username = signup_fm.cleaned_data.get('username')
            first_name = signup_fm.cleaned_data.get('first_name')
            last_name = signup_fm.cleaned_data.get('last_name')
            email = signup_fm.cleaned_data.get('email')
            password = signup_fm.cleaned_data.get('password1')

            birthday = signup_fm.cleaned_data.get('birthday')
            location = signup_fm.cleaned_data.get('location')

            u = User.objects.create_user(username=username, first_name=first_name,
                                         last_name=last_name, email=email, password=password)

            u.profile.birthday = birthday
            u.profile.location = location
            u.profile.save()

            user = authenticate(username=username, password=password)
            login(request, user)

            return redirect(reverse('profile', args=[username]))

        else:
            return render(request, 'core/registration.html', context={'form': signup_fm})


Сейчас, например, когда юзер вводит всё правильно, но допускает ошибку в вводе даты то происходит перезагрузка страницы, и выводится список ошибок валидации. В данном случае ошибка валидвации поля даты. А остальные поля, которые были введены правильно остаются пустыми, и их приходиться вводить снова.
Как решить эту ситуацию? Спасибо!

registration.html
{% for field in form %}
      {% if field.errors %}
      <div class="alert alert-dismissible alert-danger" role="alert">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
        <span aria-hidden="true">&times;</span>
        </button>
        {{ field.label }}
        {{ field.errors }}
      </div>
      {% endif %}
    {% endfor %}

  <form action="{% url 'signup' %}" method="post">
....
</form>
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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