Не возвращаются ли формы в контексте, если они не изменены?

В моем HTML-файле есть кнопка отправки (click_button) для выполнения действий и кнопка отправки для формы Django (form_submit). Все сабмиты перенаправляются на одну View-функцию (get_post_from_submit). При использовании функции return render() я всегда должен вернуть контекст включая форму, но у меня нет информации о форме, когда я нажал на кнопку click_button.

Есть ли способ не возвращать форму снова?

home.html

....

<body>
{% load bootstrap4 %}
<form action="" method="POST" novalidate>
    {% csrf_token %}
    {% bootstrap_form form %}
</form>



<form action="" method="POST" novalidate>
    {% csrf_token %}
    <button class="btn btn-primary" name="click_button" type="submit">Grafik</button>
</form>

</body>
....

views.py

def get_post_from_submit(request):
    if request.method == 'POST':
        if "book_field" in request.POST:
            # Do Stuff
            form = form_book(request.POST)

        if "click_button" in request.POST:
            # Do Stuff
            # Here the form always gets a reset, because I have no Info about the form in POST but it is needed as context...
            form = form_book()

    return render(request, 'home.html',{"form": form})

Одним из методов может быть инкапсуляция только одного тега form в обе секции.

<form action="" method="POST" novalidate>
    {% bootstrap_form form %}
    <input type="submit" name="action" value="FormSubmit"/>
    {% csrf_token %}
    <input type="submit" name="action" value="Grafik"/>
</form>

Используя name="action", вы можете дифференцировать действие POST в представлении следующим образом:

def get_post_from_submit(request):
    if request.method == 'POST':
        form = form_book(request.POST)
        if request.POST['action'] == 'FormSubmit':
            [...]

        elif request.POST['action'] == 'Grafik':
            [...]

    return render(request, 'home.html',{"form": form})

form_book не сможет сохранить данные формы всякий раз, когда в представление отправляется тип Grafik POST.

Вернуться на верх