使用Flask循环通过包含输入的POST请求

2024-05-14 14:42:36 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我创建了从调度中获取json数据的代码,并在flask模板上打印带有for循环的键值对。来自对的值在一个文本字段中,您应该能够在提交时更新这些值。问题是我不知道如何从时间表中循环每节课,我只是设法做到第一节课。在

这是我的表格

<form method="POST">
    <body>
    <h1>Uppdatera lektion</h1>
        {%for dict_item in update%}
        <br>
            {%for key, value in dict_item.items()%}
                <br>
                    <b>{{key}}</b>
                    <input type="text" name="values" value="{{value}}"/>
                </br>
            {%endfor%}
        </br>
        {%endfor%}
    <input type=submit value=Registrera>
    </body>
</form>

这是我的邮寄方法

^{pr2}$

下面是带有键和值的讲座格式在浏览器上的样子

https://imgur.com/YDIMslw

所以,是的,我需要一些建议,关于如何继续,并能够更新所有的讲座,而不仅仅是第一次。提前谢谢!在


Tags: keyinbrformjsonforinputvalue
3条回答

@spaniard不幸的是,我不能在flask模板中使用python方法,比如enumerate和len。我搞砸了一下,想出了这个:

{%for dict_item in update%}
    <br>
        {%for key, value in dict_item.items()%}
            <br>
                <b>{{key}}</b><input type="hidden" name="keys" value="{{key}}" />
                <input type="text" name="values" value="{{value}}"/>
            </br>
        {%endfor%}
    </br>
{%endfor%}

我在python代码中所做的,获取了两个包含键的新值的列表,并用它们创建了一个新列表。在

input_values = request.form.getlist("values") item_count = request.form.getlist("keys") new_list = list(zip(item_count, input_values))

但不太确定如何继续前进,有什么建议吗?在

我认为您应该将[]添加到表单中的值中,以便将其作为多值,如下所示:

<input type="text" name="values[]" value="{{value}}"/>

正如我在评论中告诉过您的,您不应该对多个input字段使用相同的属性name。这会使一切复杂化,首先是因为每个实现对它的解析不同(没有标准),其次,更重要的是,它使您的工作非常困难(我会说不可能,但我可能会错过一些东西)。在

在哪个input_value属于title和哪个属于{}之间,你有什么区别?我在你的代码中看到你使用了排序,但我不确定这个顺序是否被遵守。还有,你知道“dict”的键吗

我推荐你用这个:

{% for index, dict_item in enumerate(update) %}
<br>
    <input type="hidden" name="item_count" value="{{ len(update) }}"/>
    {% for key, value in dict_item.items() %}
        <br>
            <b>{{key}}</b>
            <input type="text" name="{{key + index}}" value="{{value}}"/>
        </br>
    {% endfor %}
</br>
{% endfor %}

然后得到:

^{pr2}$

相关问题 更多 >

    热门问题