【问题标题】:Trying to create a button per object instance尝试为每个对象实例创建一个按钮
【发布时间】:2016-06-13 09:44:07
【问题描述】:

我正在尝试制作一个按钮列表,每个按钮对应于我数据库中的一个对象。但是,当我按下其中一个按钮时,总是将生成的最后一个按钮的值发送回视图:

        {% if segmenter %}
        <form method="post">
        {% csrf_token %}
        <ul>
            {% for segment in segments %}
            <li>
                <input type="hidden" name="id" value="{{ segment.pk }}"/>
                <button type="submit">{{ segment }}</button>
            </li>
            {% endfor %}
        </ul>
        {% else %}
            <strong>No segments registered. </strong><br />
        {% endif %}

【问题讨论】:

    标签: python django python-3.x django-1.9


    【解决方案1】:

    表单项由name 区分,但您使用相同的name 进行输入。除了使用一种形式之外,您还打算在输入区分时发送所有输入。

    你应该这样做:

    {% if segmenter %}
    {% csrf_token %}
    <ul>
        {% for segment in segments %}
        <form method="post">
        <li>
            <input type="hidden" name="id_{{ segment.pk }}" value="{{ segment.pk }}"/>
            <button type="submit">{{ segment }}</button>
        </li>
        </form>
        {% endfor %}
    </ul>
    {% else %}
        <strong>No segments registered. </strong><br />
    {% endif %}
    

    在点击每个按钮时发布一个单独的表单

    【讨论】: