gpt4 book ai didi

python - Python 中分离表单和处理

转载 作者:行者123 更新时间:2023-12-01 05:54:25 26 4
gpt4 key购买 nike

我正在使用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

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

最佳答案

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

您是否正在寻找像 Jinja 这样的模板语言, MakoChameleon ?或者一个简单的表单生成和验证库,例如 FormEncode ?无论有没有 Web 框架,这些都可以轻松使用。

与 PHP 不同,Python 中几乎不使用 CGI。我们使用WSGI相反,或者是具有自己的请求模型和表单处理库的 Web 框架(从微观到大型)。使用 CGI 自己完成可能是一个教育示例,但即使对于小型 Web 应用程序,使用现有框架几乎总是会更好。可能是像 bottle 这样的微框架.

如果您不清楚如何将代码分解为多个 Python 模块,我会就此提出一个新问题(可能最好与 Web 开发没有任何关系)。此外,我会评估几种 Python 模板语言,可能还有一些 micro frameworks .

关于python - Python 中分离表单和处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13169150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com