Google App Engine(Python):在单个网页上使用多个表单

时间:2015-03-08 17:35:08

标签: python forms google-app-engine

我在一个网页上有两个表单,其内容分别在提交时存储在两个不同的数据库中。

这是包含两种不同形式的源代码:

<form method = "post">
To:<input type = "text" name = "to"><br>
Amt:<input type = "text" name = "to_amt"> <br>
<input type = "submit">
</form>

<br>

<form method = "post">
By:<input type = "text" name = "by"><br>
Amt:<input type = "text" name = "by_amt"> <br>
<input type = "submit">
</form>

现在,当我从网页提交表单时,我的相关处理程序将如何知道调用哪个表单的post方法?当我在main.py文件中提交一个表单的内容时,如何区分这两个表单?

PS:我不想将我的应用程序控件重定向到两个不同的URL,具体取决于我提交的表单。还有其他替代解决方案吗?

3 个答案:

答案 0 :(得分:3)

添加一个隐藏字段,用于标识提交的表单,然后适当地分支您的代码。

带注释的表格:

<form method = "post">
    To:<input type = "text" name = "to"><br>
    Amt:<input type = "text" name = "to_amt"> <br>
    <input type = "hidden" name = "form_name" value = "first">
    <input type = "submit">
</form>

然后只需检查你的处理程序:

def post(self):
    if self.request.get('form_name') == 'first':
        # the first form was submitted

答案 1 :(得分:1)

您应该更改提交按钮,使其具有不同的文字(例如,&#34;保存&#34;以及&#34;取消&#34;)。然后在提交按钮中添加name属性,并使用它来获取按钮上的文本。

<button type="submit" name="submit" value="Save">Save</button>

然后在app引擎中执行此操作以获取单击按钮的文本:

button = self.request.get("submit")

我使用的是button而不是input,因为前者适用于自动翻译网页的用户而后者则不适用。

这适用于两种完全不同的形式,当您有一个表单的两个提交按钮时也可以使用。

答案 2 :(得分:0)

对,

<input type="hidden" value="form1" />

您可以在每个表单中放置一个这样的字段,然后相应地在main.py中区分它们。