Ich versuche, einen "login_required" Decorator für die Ansichten in einer WSGI + Werkzeug-Anwendung zu schreiben.Python - Erhalte originale Funktionsargumente in Decorator
Um dies zu tun, muss ich auf die Benutzersitzung, die über das Request-Objekt zugänglich ist, die in die Ansicht Methoden übergeben wird.
Ich kann jedoch nicht herausfinden, wie man im Dekorateur auf diese Instanz der Anfrage kommt. Ich schaute auf PEP318, genauer auf das vierte Beispiel, aber ich verstehe es nicht ganz.
Hier ist, was ich versuche:
def login_required(*args, **kw):
def goto_login(**kw):
return redirect(url_for('login'))
def decorate(f):
# args[0] should be request
args[0].client_session['test'] = True
logged_in = 0
if logged_in:
return f
else:
return goto_login
return decorate
@login_required()
@expose('/hello/<string:name>')
def hello(request, name):
return render_template('say_hello.html', name=name)
aber ich erhalte eine Indexgrenzen Fehler aus versuchen args[0]
zu nennen.
Gibt es eine Möglichkeit, Zugriff auf das Anforderungsargument zu erhalten, das an die "Hallo" -Funktion im "login_required" -Dekorator übergeben wird?
Perfect! Ich habe eine andere Syntax verwendet, die im "expose" -Dekorator verwendet wurde - ich bin mir nicht sicher, ob ich die alternative Syntax verstehe. – ashgromnies