Атрибут кнопки с именем/значением 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
В вашем случае вы можете попробовать сделать что-то другое на стороне сервера в зависимости от кнопки, которая была использована для отправки формы.