从python中的对象创建表单

时间:2011-08-24 03:18:20

标签: 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 :(得分: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。如果您要构建独立工具,则可以使用WTFormsz3c.formdeform ...这就是简短列表。

如果您来自PHP背景,请注意以下几点:

  1. Python不是一种模板语言 - 它是一种通用语言。 PHP的开发首先是为了使创建动态网页变得容易 - 因此在PHP中嵌入PHP并将其称为一天非常容易。 Python并没有像在一个文件中将所有内容拼凑在一起那么容易(尽管你可以只使用多行字符串,连接和.format来做一些非常令人印象深刻的事情)。你想看一个模板库 - 看看Jinja2,Mako,Breve或Chameleon,选择一个对你来说最直观的那个。

  2. 如果您计划为单个名称返回多个值,则无需在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())