Übertragen von Daten zwischen Seiten in einer redirect () -Funktion in Google App Engine
Ich versuche, ein einfaches Blog mit GAE zu erstellen, und habe den folgenden Code erstellt (ich habe die Teile gelöscht, die nicht mit dieser Frage zusammenhängen):
# 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 einfache Form, die dasusername
, password
, password
erneut zur Bestätigung und ein optionalesemail
.
make_secure_val()
ist nur eine Hash-Funktion, die ein @ zurückgiHMAC
Hash-Version der Argumentzeichenfolge im Formatargument|HMAC(argument)
.
So, hier ist meine Frage: Sobald sich der Benutzer anmeldet, möchte ich zu einer anderen URL weiterleiten/welcome
, damit ich das @ benutredirect()
Funktion. Aber ich möchte auch das @ druckusername
Der Benutzer hat auf der Begrüßungsseite eine Eingabe in das Formular vorgenommen. Nur so kann ich Variablen in einem @ übergebredirect()
soll über @ an die URL übergeben werdGET
. Ich möchte aber nicht, dass die URL den Benutzernamen anzeigt. Ich möchte es wie in @ als Template-Variable übergebrender_str()
. Aber wenn ich @ benutrender_str()
in demPOST
Methode vonSignUp
, die URL bleibt/signup
.
Wie gebe ich die Daten an ein @ weiteredirect()
?