Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Accéder à l'objet request dans une application Bottle

+1 vote

Comment accéder à l'objet "request" et "response" depuis un décorateur de la vue Bottle ?

def session(callback):
    def wrapper(*args, **kwargs):
        request.get_cookie('Sailor')
        response.set_cookie('Hachis', 'Parmentier')
        view = callback(*args, **kwargs)
        return view
    return wrapper

@route('/')
@session
def root():
    return static_file('toto.html')
demandé 15-Mai-2016 par PyTorresque (114 points)
edité 16-Mai-2016 par yoch

1 Réponse

+2 votes

request et response sont définies au niveau global, il suffit donc juste de les importer depuis bottle.

EDIT: après avoir testé, ça ne fonctionne pas avec static_file, explications ici.

Du coup, un workaround serait de faire comme ça (dans le cas ou ton decorateur ne sera applique que sur des fonctions retournant un HTTPResponse, sinon il faudra adapter) :

from bottle import route, request, response, static_file
import bottle

def session(callback):
    def wrapper(*args, **kwargs):
        view = callback(*args, **kwargs)
        request.get_cookie('Sailor')
        view.set_cookie('Hachis', 'Parmentier')
        return view
    return wrapper

@route('/')
@session
def root():
    return static_file('toto.html', root='.')

bottle.run()
répondu 16-Mai-2016 par yoch (2,272 points)
edité 16-Mai-2016 par yoch
...