Also habe ich die trivialen "Warmup" -Apps mit GAE gemacht. Jetzt möchte ich etwas mit einer komplexeren Verzeichnisstruktur erstellen. Etwas in der Art von:Was ist ein guter Weg, um relative Pfade in Google App Engine zu finden?
siteroot/
models/
controllers/
controller1/
controller2/
...
templates/
template1/
template2/
...
..etc. Die Controller werden Python-Module sein, die Anfragen bearbeiten. Sie müssten dann (Django-Stil) Vorlagen in zugehörigen Ordnern suchen. Die meisten der Demo-Apps Ich resolve Vorlage Pfade so gesehen haben:
path = os.path.join(os.path.dirname(__file__), 'myPage.html')
... die __ Datei löst __ Eigenschaft auf den aktuell ausgeführten Skripts. Wenn in meinem obigen Beispiel ein Python-Skript in controllers/controller1/ausgeführt würde, würde die "myPage.html" in dasselbe Verzeichnis aufgelöst werden - controllers/controller1/myPage.html - und ich würde meine Datei sauber trennen Python-Code und Vorlagen.
Die Lösung, die ich gehackt habe zusammen fühlt ... hacky:
base_paths = os.path.split(os.path.dirname(__file__))
template_dir = os.path.join(base_paths[0], "templates")
Also, ich bin Wegschneiden nur das letzte Element des Pfades für das aktuell laufende Skript und Anhängen des Vorlagenverzeichnis auf die neuer Weg. Die anderen (nicht GAE-spezifischen) Lösungen, die ich zum Auflösen von Python-Pfaden gesehen habe, scheinen ziemlich schwergewichtig zu sein (z. B. das Aufteilen von Pfaden in Listen und das entsprechende Manipulieren). Django scheint dafür eine Antwort zu haben, aber ich bleibe lieber bei der GAE-API, anstatt eine vollständige Django-App zu erstellen und sie für GAE zu modifizieren.
Ich nehme an, alles hartcodierte wäre nicht Starter, da die Apps auf der unendlichen Serverfarm von Google leben. Also, was ist ein besserer Weg?