繁体   English   中英

从python中的对象创建表单

[英]Creating a form from an object in 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">

您可以使用具有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])

与您的第二个示例类似。

如果您正在使用网站forms ,我建议使用wtf ,这是与Flask集成的链接。 http://packages.python.org/Flask-WTF/

WTF网站=> http://wtforms.simplecodes.com/docs/0.6/

在Python中有很多选项可以处理表单创建和验证。 如果您使用的是Django, 则它具有内置的表单构建和验证功能 如果您要构建独立工具,则可以使用WTFormsz3c.form变形 ...,这只是简短列表。

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

  1. Python不是模板语言,而是一种通用语言。 PHP的开发首先是为了使创建动态网页变得容易,因此将PHP嵌入HTML并称其为日非常容易。 Python很难将一个文件全部放在一起(尽管您仅使用多行字符串,串联和.format就能完成一些令人印象深刻的事情)。 您需要检查一个模板库-看一下Jinja2,Mako,Breve或Chameleon,然后选择对您来说最直观的一个。

  2. 如果您打算为单个名称返回多个值,则无需在HTML中使用I_am_an_array[]构造。 您使用的任何库( 包括内置库)都支持为单个名称接收多个值,并将适当处理。

ah,不管怎么说,代码:

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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM