http://wiki.python.de/Colubrid/ObjectApplication
http://wiki.python.de/Colubrid/RegexApplication
oder
http://wsgiarea.pocoo.org/colubrid/docu ... pplication
http://wsgiarea.pocoo.org/colubrid/docu ... pplication
Ich hatte mir erst ObjectApplication angesehen und fand das super. Gerade weil man schön Bereiche auf Klassen auftrennen kann, das gefällt mir sehr gut.
Nun ist es aber so, das ich folgende Programmteile/URLs realisieren möchte:
/download/verz-1/.../verz-n
/upload/datei
/info/
Dabei möchte ich das Aufteilen in die drei Klassen "download", "upload" und "info" um dann die jeweiligen Funktionen schön zu trennen.
Das geht aber nicht:
Code: Alles auswählen
import posixpath
from colubrid import ObjectApplication
class base(object):
def _info(self, methodname):
self.request.write("<h3>Aufruf von '%s'</h3>\n" % methodname)
class index(base):
def index(self):
self._info('index.index') # Globale info-Methode aufrufen
class download(base):
def index(self, path="/"):
self._info('download.index')
self.request.echo("path:", path)
class upload(base):
def index(self, filename=None):
self._info('upload.index')
self.request.echo("filename:", filename)
class info(base):
def index(self):
self._info('info.index')
class DispatcherApplication(ObjectApplication):
"""
Die Haupt-Klasse, setzt die Programmlogik um.
"""
# Setzt den Objekt-Baum für die URLs zusammen
root = index
root.download = download
root.upload = upload
root.info = info
def process_request(self):
super(DispatcherApplication, self).process_request()
self.on_close()
def on_close(self):
"""
URL Liste aufbauen, damit sie direkt "anklickbar" sind
"""
self.request.write("<p><h3>Available URLs:</h3>\n")
for url in ("", "download", "download/verz1", "download/verz1/verz2",\
"upload", "upload/file1", "info", "NotExists!"):
self.request.write(
'<a href="%s">/%s</a><br/>\n' % (
posixpath.join(self.request.environ["SCRIPT_ROOT"], url),
url
)
)
self.request.write("</p>\n")
app = DispatcherApplication
if __name__ == '__main__':
from colubrid import execute
execute()
Nun könnte ich eine RegexApplication machen mit:
Code: Alles auswählen
urls = [
(r'^$', 'index'),
(r'^download/(.*?)$', 'download')
(r'^upload/(.*?)$', 'upload')
(r'^info/$', 'info'),
]