Sto provando a scrivere un decoratore "login_required" per le viste in un'applicazione WSGI + Werkzeug.Python - Ottieni gli argomenti della funzione originale nel decoratore
Per fare ciò, ho bisogno di accedere alla sessione dell'utente, che è accessibile tramite l'oggetto Richiesta che viene passato nei metodi di visualizzazione.
Non riesco a capire come ottenere quell'istanza di richiesta nel decoratore, però. Ho guardato PEP318, in particolare il quarto esempio, ma non riesco a capirlo.
Ecco quello che sto cercando:
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)
ma ottengo un indice di errore limiti cercando di chiamare args[0]
.
C'è un modo per accedere all'argomento della richiesta passato nella funzione "ciao" nel decoratore "login_required"?
Perfetto! Stavo usando una sintassi diversa che è stata usata nel decoratore "expose" - non sono sicuro di aver compreso la sintassi alternativa. – ashgromnies