2016-05-10 5 views
1

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にかかる単純な形、passwordpasswordと任意email

make_secure_val()は、の形式で引数文字列のHMACハッシュバージョンを返す単なるハッシュ関数です。

これは私の質問です。ユーザーがサインアップすると、/welcomeという別のURLにリダイレクトしたいので、私はredirect()機能を使用します。しかし、ウェルカムページのフォームに入力したユーザーusernameも印刷したいと考えています。 redirect()で変数を渡す方法がわかっている唯一の方法は、GETを介してURLに渡すことです。しかし、URLにユーザー名を表示させたくありません。 render_str()のようなテンプレート変数として渡したいと思います。しかし、render_str()POSTメソッドをSignUpとすると、URLはまだ/signupになります。

redirect()にデータを渡すにはどうすればよいですか?

答えて

関連する問題