所以我创建了从时间表中获取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>
这是我的发帖方法
if request.method == "POST":
input_values = request.form.getlist("values")
url = "https://ltu.instructure.com/api/v1/calendar_events.json"
payload = {
'calendar_event[context_code]': "MY_USER",
'calendar_event[title]': input_values[0],
'calendar_event[start_at]': input_values[1]+"T"+input_values[2]+"Z",
'calendar_event[end_at]': input_values[3]+"T"+input_values[4]+"Z",
'calendar_event[description]': input_values[5]
}
headers = {
'Authorization': "MY_TOKEN",
'cache-control': "no-cache",
'Postman-Token': "e0bc1a1c-5baf-47f8-a2ce-62d476040e73"
}
r = requests.post(url, data=payload, headers=headers)
print(r.text)
return "Uppdateringen lyckades!"
这是带有键和值的讲座格式在浏览器上的样子
是的,在这里,我需要一些有关如何继续进行并能够更新所有讲座的建议,而不仅仅是第一堂。预先感谢!
答案 0 :(得分:0)
我认为您应该将[]
添加到表单中的值以使其成为多值,如下所示:
<input type="text" name="values[]" value="{{value}}"/>
答案 1 :(得分:0)
正如我在评论中告诉您的那样,您不应在多个name
字段中使用相同的属性input
。这使一切变得复杂,首先是因为每个实现对它的解析方式都不一样(没有标准),其次更重要的是,这使您的工作非常困难(我说这是不可能的,但是可能会遗漏某些东西)。
属于{{1}的input_value
和属于title
的{{1}}有何区别?我在您的代码中看到您使用了排序,但是不确定该命令是否保留。另外,您知道`dict_items
我建议您使用类似这样的内容:
description
,然后将其获取为:
{% 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 %}
答案 2 :(得分:0)
@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))
虽然不确定如何继续前进,但有什么建议吗?