python - 如何通过按钮/提交单击将表格数据从模板传递到 Django?
问题描述
我的模板有一个搜索字段,可以在表格中显示结果。在表格中,对于每个结果,我想放置一个“+”按钮,允许用户将该行结果保存到他们的个人资料中。
这是页面的样子:https ://imgur.com/txKSuj0
我的模板的相关部分:
<form action="{% url 'foodlog:detail' foodlist.id %}" method="post">
{% csrf_token %}
{{ form2 }}
<input type="submit" name="search" value="Search">
</form>
{% if foodResults %}
<table>
<th>Food</th>
<th>Calories per 100 grams</th>
<th></th>
{% for x, y inResults %}
<tr>
<td>{{ x }}</td>
<td>{{ y }}</td>
<td> <input type="submit" name="add" value="+" method = "post"> </td>
</tr>>
{% endfor %}
</table>
{% endif %}
我的观点的相关部分:
if request.method == 'POST':
if 'add' in request.POST:
#psuedo code
#object.create(food=[buttonrow, firstheader], calories=[buttonrow, secondheader])
#object.save()
我也不知道为什么那些 '<<<<<' 出现在页面上,如图所示。
解决方案
如果想法是单击表格行上的按钮会将该行中的数据提交给 Django,那么您将需要一些 Javascript 进行onClick
处理,以便在提交之前将该行中的数据插入表单字段。或者,不要value="+"
填写每行独有的内容。例如,创建Results
一个返回Product
对象的查询集,让模板for
循环遍历这些对象,然后您可以执行value="{{product.id}}"
. 然后,您将这个值直接从request.POST
您的视图函数中提取出来(并且不要忘记在它使您的代码崩溃之前验证它确实对应于现有产品!)
推荐阅读
- r - How to define R functions with mutate_(), paste(), and varnames
- android - What is the difference between two RecyclerView dependencies?
- node.js - 在 MEAN 堆栈应用程序中成功更新后如何显示最新/更新的值?
- node.js - 使用 res.write 流式传输响应时无法设置标头后发送到客户端错误
- angular - Hide component through return output
- node.js - Pin nodejs version on Alpine without building from source
- node.js - 0x only outputting small Graphs
- c# - 在 ASP.NET WebForms 中按项目 ID 显示模式
- regex - 修改alter number string pandas
- javascript - 使用 react 和 webpack4 拆分项目;html 标签是意外的标记