Добавление условного контекста к функции для работы в шаблоне 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 %}