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

War es hilfreich?

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top