在 Django 中,如何使用来自 html 复选框的列表循环遍历元素,并转到元素特定页面

In Django, how to use a list from html checkboxes to loop through elements, and go to element specific page

我想从 HTML 表单中获取一个列表,其中包含特定的 ID:

search.html:

<form method='POST' action='/report/'>
{% for o in obj %}
    <tbody>
    <tr>
      <td>{{o.sample}}</td>
      <td><input type="checkbox" name="Samples" value="{{o.sample}}</td>
    </tr>
    </tbody>
{% endfor %}
<input type="submit" value="Submit">
</form>

这为我的报告视图提供了示例列表,可将我带到 /report/

在我的 URL 中,我定义了一个正则表达式,这样它就可以将我带到特定报告示例 URL:

url(r'^report/Sam\d{1,5}_\d{2}/$', views.report),

我想要的是能够遍历此列表样本 ID,因此当我单击初始提交时,它会将我带到第一个样本 ID:

localhost:8000/report/H1_1/

然后我处理并为这个样本制作报告,我提交它会将我带到我列表中的下一个样本 ID:

localhost:8000/report/H2_1/

等等

我一直在绞尽脑汁思考如何做到这一点,我唯一想到的是:

search.html:

{% for o in obj %}
    <form method='POST' action='/report/{{o.sample}}'>
    <tbody>
    <tr>
      <td>{{o.sample}}</td>
      <td><input type="checkbox" name="Samples" value="{{o.sample}}</td>
    </tr>
    </tbody>
{% endfor %}
<input type="submit" value="Submit">
</form>

但我不知道如何进入示例特定 html 页面表单中的下一个示例。

您可能想关闭循环内的每个表单,或者您想要一个包含所有条目的表单,但您现在拥有的不是那么干净,可能会导致错误。 像这样:

{% for o in obj %}
<form method="POST" action="/report/{{o.sample}}">
    <tbody>
        <tr>
            <td>{{o.sample}}</td>
            <td><input type="checkbox" name="Samples" value="{{o.sample}}"></td>
        </tr>
    </tbody>
    <input type="submit" value="Submit" label="Submit {{o.sample}}">
</form>
{% endfor %}

或者像这样的单一表格:

<form method="POST" action="/report/samples">
{% for o in obj %}
    <tbody>
        <tr>
            <td>{{o.sample}}</td>
            <td><input type="checkbox" name="Samples" value="{{o.sample}}"></td>
        </tr>
    </tbody>
{% endfor %}
<input type="submit" value="Submit" label="Submit">
</form>

但我认为,根据您所写的内容,第一个示例更符合您的需求。