gpt4 book ai didi

python - 在 Google App Engine 中的 redirect() 函数中在页面之间传递数据

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:53 25 4
gpt4 key购买 nike

我正在尝试使用 GAE 构建一个简单的博客,我编写了以下代码(我删除了与此问题无关的部分):

# LOADING THE TEMPLATE INTO THE JINJA ENVIRONMENT
template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), autoescape = True)

# HELPER FUNCTION
def render_str(template, **params):
t = jinja_env.get_template(template)
return t.render(params)

# GOOGLE DATASTORE DATABASE
class Entries(db.Model):
title = db.StringProperty(required = True)
body = db.TextProperty(required = True)
created = db.DateTimeProperty(auto_now_add = True)

# HANDLER FUNCTIONS
class SignUp(webapp2.RequestHandler):
def get(self):
self.response.write(render_str('signup.html'))

def post(self):
have_error = False
username = self.request.get('username')
password = self.request.get('password')
verify = self.request.get('verify')
email = self.request.get('email')

params = dict(username = username, email = email)

if not valid_username(username):
params['error_username'] = "That's not a valid username."
have_error = True

if not valid_password(password):
params['error_password'] = "That wasn't a valid password."
have_error = True
elif password != verify:
params['error_verify'] = "Your passwords didn't match."
have_error = True

if not valid_email(email):
params['error_email'] = "That's not a valid email."
have_error = True

pwhash = make_secure_val(password)
self.response.headers.add_header('Set-Cookie', 'uid: %s' % str(pwhash))

if have_error:
self.response.write(render_str('signup.html', **params))
else:
self.redirect('/welcome')

class Welcome(webapp2.RequestHandler):
def get(self):
self.response.write(render_str('welcome.html'))

# APP HANDLERS
app = webapp2.WSGIApplication([('/', MainPage),
('/newpost', NewPost),
('/newpost/(\d+)', Permalink),
('/signup', SignUp),
('/welcome', Welcome)
], debug=True)

signup.html 是一个简单的表单,再次输入用户名密码密码来验证和可选的电子邮件

make_secure_val() 只是一个哈希函数,它返回参数字符串的 HMAC 哈希版本,格式为 argument|HMAC(argument).

所以,这是我的问题:用户注册后,我想要重定向到另一个 URL /welcome,从而使我使用 redirect() 函数。但我还想打印用户在欢迎页面的表单中输入的用户名。我知道如何在 redirect() 中传递变量的唯一方法是通过 GET 传递到 URL。但我不希望 URL 显示用户名。我想将它作为模板变量传递,就像在 render_str() 中一样。但如果我在 SignUpPOST 方法中使用 render_str(),URL 仍将是 /signup

如何将数据传递给 redirect()

最佳答案

您可以使用webapp2 sessions以更加灵活和安全的方式跨多个请求共享数据,而无需将其编码到 URL 中。

查看此问答的示例:Webapp2 Sessions in Google app engine

关于python - 在 Google App Engine 中的 redirect() 函数中在页面之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37134540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com