在GAE(Python)中,使用webApp Framework,调用self.redirect('some_url')会通过GET方法将用户重定向到该URL。是否可以通过POST方法使用一些参数进行(重定向)?
如果可能,怎么做?
谢谢!
答案 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)