我正在编写一个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))
我真的需要一些帮助。请。感谢。
答案 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