J'essaye d'écrire un décorateur "login_required" pour les vues dans une application WSGI + Werkzeug. Pour ce faire, je dois obtenir à la session de l'utilisateur, qui est accessible via l'objet de demande qui est passé dans les méthodes d'affichage.Python - Obtenir des arguments de fonction d'origine dans le décorateur
Je ne peux pas comprendre comment obtenir à cette instance de demande dans le décorateur, cependant. J'ai regardé le PEP318, en particulier le quatrième exemple, mais je ne comprends pas très bien.
Voici ce que je suis en train:
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)
mais je reçois un index sur une erreur de limites en essayant d'appeler args[0]
.
Est-il possible d'accéder à l'argument request passé dans la fonction "hello" du décorateur "login_required"?
Parfait! J'utilisais une syntaxe différente qui était utilisée dans le décorateur "exposer" - je ne suis pas sûr de comprendre la syntaxe alternative. – ashgromnies