Форма Django сохраняет информацию после отправки

У меня есть форма Django, и я пробую различные варианты, чтобы сделать 2 вещи, когда форма отправлена:

  1. Redirect the form back without any information
  2. Trigger a Modal after a Django Form is submitted.

Я следовал этому ответу но это не сработало форма была успешно отправлена но модальное окно не появилось.

Я добавил контекст successful_submit в представления, чтобы он срабатывал после отправки формы

Вот часть HTML-шаблона:

          <div class="text-center">
            <button
              class="btn btn-primary mt-5"
              onclick="stepper1.previous()"
            >
              Previous
            </button>
            <button type="submit" class="btn btn-success mt-5">
              Submit
            </button>
            <button
              type="button"
              class="btn btn-primary"
              data-mdb-toggle="modal"
              data-mdb-target="#exampleModal"
            >
              Launch demo modal
            </button>
              <!-- Modal -->
              <div
                class="modal fade"
                id="exampleModal"
                tabindex="-1"
                aria-labelledby="exampleModalLabel"
                aria-hidden="true"
              >
                <div class="modal-dialog">
                  <div class="modal-content">
                    <div class="modal-header">
                      <h5 class="modal-title" id="exampleModalLabel">
                        Modal title
                      </h5>
                      <button
                        type="button"
                        class="btn-close"
                        data-mdb-dismiss="modal"
                        aria-label="Close"
                      ></button>
                    </div>
                    <div class="modal-body">...</div>
                    <div class="modal-footer">
                      <button
                        type="button"
                        class="btn btn-secondary"
                        data-mdb-dismiss="modal"
                      >
                        Close
                      </button>
                      <button type="button" class="btn btn-primary">
                        Save changes
                      </button>
                    </div>
                  </div>
                </div>
              </div>

вот часть javascript, чтобы показать его, когда он успешно отправлен

    {% if successful_submit %}
        <script type="text/javascript">
            $(document).ready(function(){
                $("#exampleModal").modal('show');
            });
        </script>
    {% endif %}

здесь views.py

def add__plan(request):
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = infoForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            form.save()
            _name = form.cleaned_data.get('Name')
            messages.success(request, f'PDF created for {_name}!')
            # return redirect('plan:plan')
            # redirect(reverse('plan:plan', kwargs={'successful_submit': True}))
            return render(request, 'plan/plan.html', {'form': form, 'successful_submit': True})

    # if a GET (or any other method) we'll create a blank form
    else:
        form = infoForm()
        print(form.errors)
    return render(request, 'plan/plan.html', {'form': form, 'successful_submit': True })

При срабатывании модала:

В последней строке add__plan(request) вы передаете successful_submit как True, что должно заставить модал загружаться при первой загрузке страницы (до отправки формы), т.е. модал должен быть показан без отправки формы.

successful_submit изначально должно быть False.

def add__plan(request):
    if request.method == 'POST':
        # code
        if form.is_valid():
            # code
            return render(request, 'plan/plan.html', {'form': form, 'successful_submit': True})

    else:
        # code
    return render(request, 'plan/plan.html', {'form': form, 'successful_submit': False })

Допустим, у вас есть successful_submit=True в соответствии с представленным вами кодом. Тогда при загрузке страницы должен появиться модал. Если модальное окно не отображается:

  • проверьте консоль браузера на наличие ошибок
  • проверьте, загружены ли JQuery и Bootstrap в правильном порядке
Вернуться на верх