首页 文章

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

提问于
浏览
2

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

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

<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 回答

  • 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
    
  • 3

    您应该更改提交按钮,以便它们具有不同的文本(例如,"Save"和"Cancel") . 然后在提交按钮中添加 name 属性,并使用它来获取按钮上的文本 .

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

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

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

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

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

  • 0

    是啊,

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

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

相关问题