【问题标题】:Google App Engine (Python): Using multiple forms on a single web pageGoogle App Engine (Python):在单个网页上使用多个表单
【发布时间】:2015-03-09 22:16:58
【问题描述】:

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

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

<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。有没有其他替代方案?

【问题讨论】:

  • 可以使用 AJAX 吗?或者,您可以在两个表单中放置一个隐藏字段,指定它是什么表单,然后您的 main.py 文件可以从那里区分。
  • 我对 AJAX 不是很熟悉。至于使用隐藏的表单域,你能给我举个例子吗?

标签: python forms google-app-engine


【解决方案1】:

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

带注释的表格:

<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

【讨论】:

    【解决方案2】:

    您应该更改提交按钮,使它们具有不同的文本(例如,“保存”和“取消”)。然后将name 属性添加到您的提交按钮并使用它来获取按钮上的文本。

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

    然后在应用引擎中执行此操作以获取被点击按钮的文本:

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

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

    这适用于两个完全不同的表单,也适用于一个表单有两个提交按钮。

    【讨论】:

      【解决方案3】:

      是的,

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

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

      【讨论】:

      • 究竟如何在 main.py 中使用区分隐藏字段值?
      • 我不确定,我对 Google App Engine 没有太多经验。
      猜你喜欢
      • 2015-10-22
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 2012-08-19
      • 2011-05-28
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      相关资源
      最近更新 更多