2011-02-05 79 views
1

AdminPage我创建了几个表单来编辑数据库中的表单域;所有形式指action=/adminpage如何用同一处理程序处理多个提交表单? (谷歌应用程序引擎-python)

<form name="submit_form" action="/adminpage" method="post"> 

然后我创建了一个def post(self):来处理每个形式,例如

def post(self): 
    .... 
    handle first form 

def post(self): 
    ... 
    handle second form 

等。

显然这是错误的,因为每个def post(self):独立工作;只有当我添加其他人他们不工作。

我搜索了如何将表单的名称传递给脚本,但找不到任何有用的东西。你有什么建议来处理每个表单而不为每个表单创建一个单独的处理程序?谢谢!

回答

2

首先,每个表单都有单独的处理程序有什么问题?如果你确定你想要走这条路,你有几个选择。您可以检查引荐来源网址,查看用户来自哪个网页,并推断提交内容。另一种选择是在每个表单中放置隐藏字段,以指定要提交的表单。

请注意,使用这些方法中的任何一种,恶意用户都可以轻松地对系统进行游戏,以使您认为您正在处理不同类型的表单。由你决定是否这是一个问题。如果您确实想要为多个表单使用相同的处理程序,请确保不要混合执行特权操作的表单。

+0

好的,谢谢。我为每个表单创建了不同的处理程序。 – Zeynel 2011-02-05 20:58:18

+0

请不要使用引用者。与使用不同的处理程序URL相比,使用隐藏字段不存在更多的漏洞。 – 2011-02-06 23:09:22

2

您可以在每个表单中添加一个隐藏的输入元素,然后使用该字段的值来区分页面上的不同表单。例如: -

<input type="text" name="form_name" value="submit_form" style="display:none"></input> 

然后你就可以在您的文章使用FORM_NAME的值()找出正在提交的表单。

相关问题