首页 > 解决方案 > 如何通过按钮/提交单击将表格数据从模板传递到 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()

我也不知道为什么那些 '<<<<<' 出现在页面上,如图所示。

标签: pythonhtmldjango

解决方案


如果想法是单击表格行上的按钮会将该行中的数据提交给 Django,那么您将需要一些 Javascript 进行onClick处理,以便在提交之前将该行中的数据插入表单字段。或者,不要value="+"填写每行独有的内容。例如,创建Results一个返回Product对象的查询集,让模板for循环遍历这些对象,然后您可以执行value="{{product.id}}". 然后,您将这个值直接从request.POST您的视图函数中提取出来(并且不要忘记在它使您的代码崩溃之前验证它确实对应于现有产品!)


推荐阅读