HTML 名称/值按钮属性未通过 POST 请求发送到服务器

问题描述 投票:0回答:2

我目前正在使用 HTMX 和 Django 处理表格中的按钮点击,将所选项目添加到列表中。我正在尝试使用名称/值 HTML 属性将值基于数据库信息动态发送到后端。我有以下表格代码:

<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 令牌,我在这里做错了什么?

python html django post htmx
2个回答
0
投票

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

在您的情况下,您可以尝试根据用于提交表单的按钮在服务器端做一些不同的事情。


0
投票

试试

<button hx-vals='{"projectChoice":"{{project.project_title}}"}' ... >Add</button>

<button hx-vals='js:{"projectChoice": event.target.value}' ... >Add</button>
© www.soinside.com 2019 - 2024. All rights reserved.