从对象在Python中创建表单
好的,我对Python还是个新手,但我经常用PHP。
基本上,我想弄明白怎么把一个对象,比如:
{key:value,key:value}
或者
{key:[value,value,value],key2:value2}
转换成表单:
<input name="key" value="value">
<input name="key" value="value">
还有
<input name="key[]" value="value">
<input name="key[]" value="value">
<input name="key[]" value="value">
<input name="key2" value="value2">
4 个回答
0
如果你在做网站的时候需要用到 forms
(表单),我推荐你使用 wtf
。这里有一个关于如何和 Flask
集成的链接。http://packages.python.org/Flask-WTF/
WTF 的官网在这里 => http://wtforms.simplecodes.com/docs/0.6/
0
在Python中,有很多选项可以用来创建和验证表单。如果你在使用Django,它自带了表单构建和验证的功能。如果你是在做一个独立的工具,你可以选择WTForms、z3c.form、deform……这只是一些常见的选择。
如果你是从PHP转过来的,有几点需要注意:
Python并不是一种模板语言,它是一种通用编程语言。PHP最初是为了方便创建动态网页而开发的,所以在HTML中嵌入PHP非常简单,基本上可以一气呵成。而Python在这方面就没有那么简单,虽然你可以用多行字符串、字符串拼接和
.format
做一些很酷的事情,但要把所有东西放在一个文件里就没那么容易了。你可能需要看看模板库,比如Jinja2、Mako、Breve或Chameleon,选择一个你觉得最直观的。如果你打算为一个名字返回多个值,HTML中不需要使用
I_am_an_array[]
这种写法。你使用的任何库(包括内置的库)都支持为一个名字接收多个值,并会妥善处理这些值。
1
你可以先准备一个包含HTML结构的模板。然后,把里面的#key#和#value#替换成真实的值。
template = '<input name="#key#" value="#value#">'
html = template
data = {key:value,key:value}
for key in data.keys():
html = html.replace("#key#", key).replace("#value#", data[value]) + "\n"
html = html + template
#there's an extra template line here that you'll have to get rid of.
html = "\n".join(html.split("\n")[0:-1])
对于你的第二个例子,也是类似的做法。