是否可以在HTML表单中对类似列表/字典的元素进行建模?

时间:2019-06-07 14:48:57

标签: python html flask

我写了一个python脚本,该脚本从.yaml文件中创建开关配置。 而且我不确定如何创建适合我需求的网络表单。

我对如何做到这一点完全开放。我只需要一种将值发布到我的python脚本的方法。

我的HTML表单如下:

<form method="POST">
<input type="text" name="port"></input>
<input type="text" name="port.mode"></input>
</form>

发布的数据按如下方式进入Flask: [('port','Port1'),('port.mode','Access')]

我想要这样的数据: {“ ports”:{“ port1”:{“ mode”:“ Access”}}}

++更新 我已经在使用Jinja创建模板。 样本Jinja模板:

{%- for name,options in ports.items() %}
interface {{ name }}
{%- if options.mode == 'access' %}
switchport mode access
{% else %}
switchport mode trunk
{% endif %}

我的问题在HTML表单和模板引擎之间。我不确定如何对HTML表单进行建模以适应我的需求。

我可以想到的两种方法。  1.提交前,请用Javascript更改HTTP Post请求  2.编写一个服务器端python代码,以将HTTP发布数据转换为我的jinja模板的正确格式。

但是我完全接受我使用的方法。我不仅限于flask,jinja和python。

1 个答案:

答案 0 :(得分:-1)

这是解决方案吗?

In [1]: x = [('port', 'Port1'), ('port.mode', 'Access')]
In [2]: {x[0][0]: {x[0][1]: {x[1][0]: x[1][1]}}}
Out[2]: {'port': {'Port1': {'port.mode': 'Access'}}}