TIPFY & JINJA: Erstellen einer Abmelde -URL für jede Seite
-
26-10-2019 - |
Frage
Ich habe eine Jinja -Vorlage mit den üblichen Kesselplatten -Links, von denen einer der Link "Anmelden" ist. Die URL dieses Links muss mit den Benutzern generiert werden.
Ich möchte vermeiden, diese URL zu generieren und für jeden einzelnen Get/Post -Handler zu meinem Render_Response hinzuzufügen. Ich habe mich mit Alternativen befasst, aber keinen funktionalen Weg gefunden.
BasisEquestHandler
Dies scheint der sauberste Ansatz zu sein, aber ich bin mir nicht sicher, wie ich vorgehen soll. Wäre es ein Fall von
self.vars['logout_link'] = users.create_logout_url(self.request.path))
..und dann in allen Standard -Antworthandlern:
return render_response('template.html', **vars)
?
Dekorateure
Dies scheint eine weitere Option zu sein, obwohl es etwas unordentlich erscheint. Ich nehme an, es würde auf die gleiche Weise funktionieren (die Abmeldeverbindung zu einer lokalen Variablen in einer Wrapper -Funktion zuweisen).
Kontextverarbeitung?
Ich benutze Tippy/Jinja, was so weit ich beurteilen kann.
Irgendwelche Ratschläge, welchen Weg ich weiter untersuchen sollte?
Vielen Dank
Lösung
Ich mache etwas Ähnliches mit Jinja / Gae und benutze eine Basehandler + eine Vorlage, die ich einbeziehe. Basehelller:
class BaseHandler(webapp2.RequestHandler):
...
def render_jinja(self, name, **data):
data['logout_url']=users.create_logout_url(self.request.uri)
template = jinja_environment.get_template('templates/'+name+'.html')
self.response.out.write(template.render(data))
Dann kann ich den Basehehandler für z. B. Formhandel erben:
class FileUploadFormHandler(BaseHandler):
def get(self):
...
self.render_jinja('contact_jinja', form=form, ...
Andere Tipps
Nachdem ich keines Rahmen verwendet habe, bin ich mir nicht sicher, ob es eine gute Möglichkeit gibt, es der Vorlage hinzuzufügen. Es kann eine Form von Middleware geben, die Sie implementieren können, aber wie ich schon sagt, habe ich keine Erfahrung mit diesen Frameworks.
Haben Sie jedoch eine universelle Abmelde -URL mit einem Handler mitgeteilt, der der richtigen URL für den Benutzer eine 303 gibt?