在 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>
但我认为,根据您所写的内容,第一个示例更符合您的需求。
我想从 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>
但我认为,根据您所写的内容,第一个示例更符合您的需求。