所以我用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的无限服务器场中。那么更好的方法是什么?