(Hinweise zum obigen Post: Habe gesehen, dass das in der neuen Version gefixt ist.)
Habe einen Vorschlag für bottle. Ausgangspunkt ist meine App um statische Dateien bereitzustellen:
Code: Alles auswählen
class StaticFileApp(object):
def __init__(self, base=''):
self.base = base
def static_css(self):
bottle.send_file('style.css', root=self.base)
def static_ico(self):
bottle.send_file('favicon.ico', root=self.base)
def static_image(self, filename):
bottle.send_file(filename, root=os.path.join(self.base, 'img'))
def register_routes(self):
route_add('/style.css', self.static_css)
route_add('/favicon.ico', self.static_ico)
route_add('/img/:filename#.*\.gif#', self.static_image)
Wie man sieht, muss man immer wieder fast die gleichen Funktionen/Methoden schreiben, was sehr umständlich ist.
Mein Wunsch wäre jetzt eine Funktion, die diesen Vorgang automatisiert, z.B. mit dem Namen "static_file_route" oder ähnliches. Diese sollte dann aus der übergebenen Route automatisch einen entsprechenden Callback mit "static_file" generieren und registrieren.
Ein sinnvoller Parameter für diese Funktion wäre dann noch ein Boolwert, der aussagt, ob "root" automatisch um die Pfade der Route erweitert werden soll oder nicht.
Bsp.
Code: Alles auswählen
#Paramater wahr:
# input:
route = '/img/blog/:filename'
root = ''
# output
root = 'img/blog'
Dürfte eine relative kleinere, aber IHMO sehr sinnvolle Erweiterung sein.
Edit: Im Prinzip wäre das dann eine Umkehrfunktion zu deinem "yieldroutes".