1

我正在使用该cgi模块来处理表单输入数据,但我希望将表单和处理放在单独的文件(模块?)中。有没有办法将POSTed 信息从 HTML 传递到处理文件?

我没有使用任何框架,并希望尽可能简单。我知道我可以通过在 python 文件中打印 HTML 来实现它,但我想将两者分开。

这是真正的问题代码:

<form action="processes/process.py" method="post">
            <div id="name1" class="formData"><label for="">First name:</label><input name="firstName" type="text" id="firstName" /></div>
            <div id="name2" class="formData"><label>Last name:</label><input name="lastName" type="text" id="lastName" /></div>
            <div id="email" class="formData"><label>Email address:</label><input name="emailAddress" type="text" id="emailAddress" /></div>
            <div id="mailAddress" class="formData"><label>Mailing address:</label><input name="physicalAddress" type="textarea" id="physicalAddress" /></div>

            <input type="submit" value="Submit" onClick="T_validateForm('firstName','','R','lastName','','R','EmailAddress','','RisEmail');return document.T_returnValue">
        </form>

我可以将其打印在我的 process.py 文件中并更改操作,但我希望此表单代码与我将用于管理和分发表单信息的代码分开。我需要将数据传递给 process.py

我试图在这里获取python代码中的数据:

form = cgi.FieldStorage()
firstName = form['firstName'].value
lastName = form['lastName'].value
emailAddress = form['emailAddress'].value
physicalAddress = form['physicalAddress'].value

我知道在 phpform中被替换为$_POST. python中是否有类似的标识符?form当它们在同一个文件中时工作,但似乎应该有某种方法告诉 python 从 HTML 获取数据POST。我以为这样cgi.FieldStorage()做了,但它不起作用。我应该将参数传递给cgi.FieldStorage()吗?

4

1 回答 1

2

这个问题非常广泛,尽管我理解分离内容、逻辑和表示是你所追求的。

您是否正在寻找像JinjaMakoChameleon这样的模板语言?还是像FormEncode这样的简单表单生成和验证库?无论有没有 web 框架,这些都可以很容易地使用。

与 PHP 不同的是,在 Python 中 CGI 几乎从未使用过。我们改用WSGI,或带有自己的请求模型和表单处理库的 Web 框架(从微到大)。使用 CGI 自己动手可能是一个教育示例,但您几乎总是会更好地使用现有框架,即使对于小型 Web 应用程序也是如此。可以是像瓶子这样的微框架。

如果您不清楚如何将代码分解为几个 Python 模块,我会提出一个新问题(最好与 Web 开发无关)。此外,我会评估一些 Python 模板语言,可能还有一些微框架

于 2012-11-01T02:03:44.520 回答