好的..我是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">
答案 0 :(得分: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])
第二个例子类似。
答案 1 :(得分:0)
如果您将forms
用于网站,我建议wtf
,这是与Flask
进行整合的链接。http://packages.python.org/Flask-WTF/
WTF网站=&gt; http://wtforms.simplecodes.com/docs/0.6/
答案 2 :(得分:0)
在Python中处理表单创建和验证有很多选项。如果您使用的是Django,it has form building and validation built-in。如果您要构建独立工具,则可以使用WTForms,z3c.form,deform ...这就是简短列表。
如果您来自PHP背景,请注意以下几点:
Python不是一种模板语言 - 它是一种通用语言。 PHP的开发首先是为了使创建动态网页变得容易 - 因此在PHP中嵌入PHP并将其称为一天非常容易。 Python并没有像在一个文件中将所有内容拼凑在一起那么容易(尽管你可以只使用多行字符串,连接和.format
来做一些非常令人印象深刻的事情)。你想看一个模板库 - 看看Jinja2,Mako,Breve或Chameleon,选择一个对你来说最直观的那个。
如果您计划为单个名称返回多个值,则无需在HTML中使用I_am_an_array[]
构造。您使用的任何库(including the built-in one)都支持为单个名称接收多个值,并会正确处理。
答案 3 :(得分:0)
Bah,无论如何,代码:
import cgi
FIELD = '<input name="%s%s" value="%s">\n'
def formulate(ob):
def _formulate():
for k, v in ob.iteritems():
if isinstance(v, list):
for i in v:
yield FIELD % (k, '[]', cgi.escape(i, True))
else:
yield FIELD % (k, '', cgi.escape(v, True))
return ''.join(_formulate())