所以我用GAE做了簡單的「熱身」應用程序。現在我想用更復雜的目錄結構來構建一些東西。沿線的東西:在Google App Engine中尋找相對路徑的好方法是什麼?
siteroot/
models/
controllers/
controller1/
controller2/
...
templates/
template1/
template2/
...
..等等。控制器將是Python模塊處理請求。然後他們需要在相關文件夾中找到(Django風格)模板。大多數演示應用程序我看到了這樣的決心模板路徑:
path = os.path.join(os.path.dirname(__file__), 'myPage.html')
...的__ __文件屬性解析到當前執行腳本。因此,在我上面的例子中,如果一個Python腳本在controllers/controller1 /中運行,那麼'myPage.html'將解析到同一個目錄 - controllers/controller1/myPage.html - 我寧願將我的Python代碼和模板。
我砍死在一起的解決方案感到...哈克:
base_paths = os.path.split(os.path.dirname(__file__))
template_dir = os.path.join(base_paths[0], "templates")
所以,我只是剪斷當前正在運行的腳本的路徑的最後一個元素,並追加模板目錄到新的道路。我見過的用於解析Python路徑的其他(非GAE特定的)解決方案看起來相當重要(例如將路徑拆分爲列表並相應地進行操作)。 Django似乎有這個答案,但我寧願堅持GAE API,與創建一個完整的Django應用程序並修改GAE。
我假設任何硬編碼將是非啓動器,因爲這些應用程序住在Google的無限服務器場中。那麼更好的方法是什麼?