GAEを使用して簡単なブログを作成しようとしています。この質問に関連していない部分は削除しました):Google App Engineのredirect()関数のページ間でデータを渡す
# 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
再度確認するusername
にかかる単純な形、password
、password
と任意email
。
make_secure_val()
は、の形式で引数文字列のHMAC
ハッシュバージョンを返す単なるハッシュ関数です。
これは私の質問です。ユーザーがサインアップすると、/welcome
という別のURLにリダイレクトしたいので、私はredirect()
機能を使用します。しかし、ウェルカムページのフォームに入力したユーザーusername
も印刷したいと考えています。 redirect()
で変数を渡す方法がわかっている唯一の方法は、GET
を介してURLに渡すことです。しかし、URLにユーザー名を表示させたくありません。 render_str()
のようなテンプレート変数として渡したいと思います。しかし、render_str()
のPOST
メソッドをSignUp
とすると、URLはまだ/signup
になります。
redirect()
にデータを渡すにはどうすればよいですか?