Добавление условного контекста к функции для работы в шаблоне Django

У меня есть форма Django, и я пытаюсь показать текст только после успешного завершения формы

Я добавил контекст, чтобы при успешном заполнении формы successful_submit был истинным, и в шаблоне я добавил условие, чтобы показывать текст только после успешного заполнения формы, но каждый раз, когда я обновляю страницу или открываю ее, он отображается даже без отправки формы, как будто нет оператора if

Вот что я сделал в своих представлениях:

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', {'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 })

вот текстовый шаблон:

              {% if successful_submit %}
              <!--Grid column-->
              <div class="col-md-3 mb-4">
                <div
                  class="toast fade show"
                  role="alert"
                  aria-live="assertive"
                  aria-atomic="true"
                >
                  <div class="toast-header">
                    <strong class="me-auto">MDBootstrap</strong>
                    <small>11 mins ago</small>
                    <button
                      type="button"
                      class="btn-close"
                      data-mdb-dismiss="toast"
                      aria-label="Close"
                    ></button>
                  </div>
                  <div class="toast-body">
                    Hello, world! This is a toast message.
                  </div>
                </div>
              </div>
              <!--Grid column-->
              {% endif %}

Здесь в GET запросе нужно убрать 'successful_submit': True или установить его как False и сделать его True только после успешной отправки формы.

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

Но я думаю, что лучше перенаправлять вместо рендеринга после успешной отправки формы, так что в этом случае вы можете использовать сообщения django .

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', {'successful_submit': True})

Теперь в шаблоне:

{% for message in messages %}
   <div>your toast message </div>
 {% empty %}

 {% endfor %}
Вернуться на верх