在GAE中登录重定向期间保留POST变量?

时间:2011-05-21 20:01:11

标签: python google-app-engine http-post

在表单中,我使用HTTP POST请求将数据提交给python webapp处理程序(基于所有Google App Engine)。在这个脚本中,我首先检查用户是否已登录,如果没有,我使用users.create_login_url(...)将用户首先重定向到登录页面。

如何确保在登录后用户不仅再次转发到我的python脚本,而且还保留了POST变量?我找到的唯一方法是将所有POST变量转换为URL参数并将其添加到URL中。

这可能吗?

2 个答案:

答案 0 :(得分:2)

通常,我会将其存储在会话变量中。我之前使用过gae-sessions并发现它很简单。它持续存在于数据存储区和后台的内存中以提高速度。看起来像这样:

from gaesessions import get_current_session
session = get_current_session()
if session.is_active():
    c = session.get('counter', 0)
    session['counter'] = c + 1
    session['blah'] = 325
    del session.blah  # remove 'blah' from the session

或者您可以全部使用HTML5y并使用localStorage

答案 1 :(得分:1)

捕获POST并将其转换为GET的一般问题首先是GET上的查询字符串具有依赖于浏览器的有限大小,其次是POST可以是多个部分(如何处理)上传的文件成为一个问题。)

可能对您有用的方法是接受POST并保存数据,然后重定向到需要登录的页面,在查询字符串中传递Key(或足够的信息以重建它们)。然后,该URL的处理程序将假定成功登录,并根据需要修复已保存的数据(例如,将其与登录用户关联)。

决定不登录的人会留下孤立的记录,您可以通过cron作业清理这些记录。