从python列表中选择HTML选项

时间:2016-10-19 20:31:39

标签: python html cgi

我正在编写一个python cgi脚本来设置Hadoop集群。 我想创建一个HTML选择下拉列表,其中的选项取自python列表。这可能吗?? 我环顾四周。找不到合适的答案。

这是我到目前为止在另一个帖子上发现的......

def makeSelect(name,values):
    SEL = '<select name="{0}">\n{1}</select>\n'
    OPT = '<option value="{0}">{0}</option>\n'
    return SEL.format(name, ''.join(OPT.format(v) for v in values))

我真的需要一些帮助。请。感谢。

2 个答案:

答案 0 :(得分:1)

你需要生成一个“选项”列表并将它们传递给你的javascript来制作列表

values = {"A": "One", "B": "Two", "C": "Three"}
options = []

for value in sorted(values.keys()):
    options.append("<option value='" + value + "'>" + values[value] + "</option>")

然后将“选项”注入你的html。比如说,在你的“template.html”中有一行:

var options = $python_list;

然后在你的python脚本结束时:

####open the html template file, read it into 'content'
html_file = "template.html"
f = open(html_file, 'r')
content = f.read()
f.close()

####replace the place holder with your python-generated list
content = content.replace("$python_list", json.dumps(options))

####write content into the final html
output_html_file = "index.html"
f = open(output_html_file, 'w')
f.write(temp_content)
f.close()

在你的“index.html”中,你应该在“var options = ...”之后有一行获取列表并生成下拉列表。

$('#my_dropdown').append(options.join("")).selectmenu();

或者,我建议您使用python生成一个json文件(使用json.dumps()),可能是一个名为“config.json”的文件。并且您的html javascript文件应该读取此json文件以呈现最终页面。所以在你的json文件中,应该有类似的东西:

{...“options”:[“One”,“Two”,“Three”] ......}

在您的html <script>部分中,您可以阅读选项值

d3.json("config.json", function(data)) {
 var options = [];
 for (var i= 0; i < data.options.length; i++)
    {
      options.push("<option value='" + data.options[i] + "'>" + data.options[i] + "</option>");

    }
 $('#my_dropdown').append(options.join("")).selectmenu();
}

答案 1 :(得分:0)

这是一种更简单的方法。

import cgitb
cgitb.enable()

import cgi
form = cgi.FieldStorage()
lister = ['a','b','c']

html_list = ''
for value in lister:
   html_list += '<option value={0}>{0}</option>'.format(value)

html = """Content-type: text/html\n

<html>
<head>
</head>
<body>
<select>
   {}
</select>
</body>
</html>
""".format(html_list)
print(html)

此处有更多详情:http://python-forum.io/Thread-string-format-and-string-expressions