表单未发布所有选中的输入复选框

时间:2019-04-13 22:37:43

标签: html django

我正在尝试发布所有选中的输入复选框。输入字段由django的for循环生成,如下所示。

根据我到目前为止发现的内容,以下内容应该可以正常工作。我认为问题可能出在输入字段是通过forloop生成的,如果是这样,我该如何解决呢?为每个值添加到列表并用js发布吗?

index.html

{% for q in list %}
    {% if forloop.last %}
        <form method="POST" name="selectedchecks"> {% csrf_token %}
            <div class="qblock">
                <label class="pure-material-checkbox">
                    <input class="selectedchecks" type="checkbox" name="choices[]" value="{{ q }}">
                    <span>
                        <p>{{ q }}</p>
                    </span>
                </label>
            </div>
        </form>
    {% endif %}
{% endfor %}

views.py

if request.method == 'POST':
    selected_list = request.POST.getlist('choices[]')

发生的情况是,如果选择了第一个复选框,则仅返回{{q}}的第一个值,如果选择了除第一个复选框以外的任何其他复选框,则不返回任何内容(空列表)。选中所有复选框也只会返回第一个值。

它应该发布所有选定的复选框值。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

更新

问题在于表单在每次循环迭代时都被重新初始化。在循环之前设置<form>标签可以解决该问题!