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

piv4azn7  于 2023-05-01  发布在  Go
关注(0)|答案(2)|浏览(104)

我目前正在使用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>

在我 www.example.com 是一个例子,说明了如何使用下面的代码:

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

ttcibm8c

ttcibm8c1#

当request属性hx-post被放置在表单本身上时,htmx发送带有提交数据的按钮值。

<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
在您的情况下,您可以尝试在服务器端执行一些不同的操作,具体取决于用于提交表单的按钮。

hmtdttj4

hmtdttj42#

尝试

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

<button hx-vals='js:{"projectChoice": event.target.value}' ... >Add</button>

相关问题