HTML name/value 按钮属性未通过 POST 请求发送到服务器
HTML name/value button attribute not being sent via POST request to server
我目前正在使用 HTMX 和 Django 处理 table 中的按钮点击,将所选项目添加到列表中。我正在尝试使用 name/value 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})
这returns不过None。为了调试这个,我尝试列出所有 POST 对服务器的请求,如下所示:
print(list(request.POST.items()))
然而这只是 returns CSRF 令牌,我在这里做错了什么?
当请求属性 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
在您的情况下,您可以尝试根据用于提交表单的按钮在服务器端做一些不同的事情。
我目前正在使用 HTMX 和 Django 处理 table 中的按钮点击,将所选项目添加到列表中。我正在尝试使用 name/value 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})
这returns不过None。为了调试这个,我尝试列出所有 POST 对服务器的请求,如下所示:
print(list(request.POST.items()))
然而这只是 returns CSRF 令牌,我在这里做错了什么?
当请求属性 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
在您的情况下,您可以尝试根据用于提交表单的按钮在服务器端做一些不同的事情。