Ich versuche, einen einfachen Blog mit GAE zu erstellen, und ich habe den folgenden Code erstellt (Ich habe die Teile gelöscht, die nicht auf diese Frage bezogen sind):Übergeben von Daten zwischen den Seiten in einer Funktion redirect() in Google App Engine
# 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
ist eine nur einfache Form, die die username
, password
, password
erneut zu überprüfen und eine optionale email
nimmt.
make_secure_val()
ist nur eine Hash-Funktion, die eine HMAC
Hash-Version der Argument-Zeichenfolge im Format argument|HMAC(argument)
zurückgibt.
Also, hier ist meine Frage: Sobald der Benutzer sich anmeldet, möchte ich eine Umleitung zu einer anderen URL /welcome
, so dass ich die redirect()
Funktion verwenden. Aber ich möchte auch den username
Benutzer ausdrucken, der in das Formular auf der Begrüßungsseite eingegeben wurde. Die einzige Möglichkeit, Variablen in einem zu übergeben, besteht darin, die URL über GET
zu übergeben. Aber ich möchte nicht, dass die URL den Benutzernamen anzeigt. Ich möchte es als Template-Variable wie in render_str()
weitergeben. Aber wenn ich render_str()
in der POST
Methode von SignUp
verwende, ist die URL immer noch /signup
.
Wie gebe ich die Daten an eine redirect()
?