Google App Engine self.redirect()POST方法

时间:2010-08-30 12:01:18

标签: python google-app-engine

在GAE(Python)中,使用webApp Framework,调用self.redirect('some_url')会通过GET方法将用户重定向到该URL。是否可以通过POST方法使用一些参数进行(重定向)?

如果可能,怎么做?

谢谢!

3 个答案:

答案 0 :(得分:6)

由于大多数客户端实现重定向[1]:

,这是不可能的
  

但是,大多数现有的用户代理实现都将302视为一样   是一个303响应,无论如何都在位置字段值上执行GET   原始请求方法。

所以你必须使用一种解决方法(比如简单地从RequestHandler调用方法post())或忘记这个想法。

[1] http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2

答案 1 :(得分:0)

可以传递参数。这是一个例子:

假设您有一个主页,并且您希望POST到'/ success'。通常,您可以这样使用:

self.redirect('/sucess')

但是,如果您想将某些参数从主页面传递到/success页面,例如username,则可以将代码修改为:

self.redirect('/sucess?username=' + username)

通过这种方式,您成功将username值传递到URL中。在/success页面中,您可以使用以下方法读取和存储值:

username = self.request.get('username')

最后,您可以使用以下简单代码将您喜爱的信息添加到/success页面:

self.response.out.write('You\'ve succeeded, ' + username + '!')

,这当然不是传递密码的安全方式。我希望它有所帮助。

答案 2 :(得分:-1)

在这里看到类似的问题:Google App Engine self.redirect post

该答案建议使用urlfetch.fetch()来发布帖子。

import urllib

form_fields = {
  "first_name": "Albert",
  "last_name": "Johnson",
  "email_address": "Albert.Johnson@example.com"
}
form_data = urllib.urlencode(form_fields)
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
result = urlfetch.fetch(url=url,
                        payload=form_data,
                        method=urlfetch.POST,
                        headers=headers)