如何使用相同的处理程序处理多个提交表单? (谷歌应用程序引擎-python)

时间:2011-02-05 20:16:03

标签: python google-app-engine forms

AdminPage中我创建了几个表单来编辑数据库中的表单字段;所有表格均引用action=/adminpage

<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 :(得分:2)

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

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

答案 1 :(得分:2)

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

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

然后您可以在post()中使用form_name的值来确定提交的表单。