Атрибут кнопки с именем/значением HTML не отправляется через POST-запрос на сервер

В настоящее время я использую HTMX и Django для обработки нажатий кнопок в таблице, которая добавляет выбранный элемент в список. Я пытаюсь использовать HTML-атрибуты name/value для отправки в бэкенд, при этом значение должно быть динамическим, основанным на информации из базы данных. У меня есть следующий код формы:

<form action="" method="post">
    {% csrf_token %}
    <button hx-post="{% url 'add-analysis' %}" hx-target="#analysis-list" type="submit" name="projectChoice" value="{{project.project_title}}">Add</button>
</form>

В моем файле Views.py я пытаюсь разобрать данные с помощью следующего кода:

def add_analysis(request):
    proj_name = request.POST.get("projectChoice")
    print(list(request.POST.items()))
    print(request.data())
    return render(request, 'includes/analysis-list.html', {"selected_projects" : proj_name})

Однако это возвращает None. Для отладки этого я попробовал перечислить все POST-запросы к серверу следующим образом:

print(list(request.POST.items()))

Однако это возвращает только токен CSRF, что я делаю не так?

htmx отправляет значение кнопки с размещенными данными, когда атрибут запроса hx-post размещен на самой форме.

<form hx-post="/form" hx-target="#result">
    <button name="submit1" value="foo" type="submit">Submit 1 (foo)</button>
    <button name="submit2" value="bar" type="submit">Submit 2 (bar)</button>
</form> 

Вот живой пример https://codepen.io/jreviews/pen/PoEJYMX

В вашем случае вы можете попробовать сделать что-то другое на стороне сервера в зависимости от кнопки, которая была использована для отправки формы.

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