所以我用 GAE 完成了琐碎的“热身”应用程序。现在我想用更复杂的目录结构构建一些东西。类似于以下内容:
siteroot/
models/
controllers/
controller1/
controller2/
...
templates/
template1/
template2/
...
..ETC。控制器将是处理请求的 Python 模块。然后他们需要在相关文件夹中找到(Django 风格的)模板。我见过的大多数演示应用程序都解析这样的模板路径:
path = os.path.join(os.path.dirname(__file__), 'myPage.html')
... __ 文件 __ 属性解析为当前正在执行的脚本。因此,在我上面的示例中,如果 Python 脚本在 controllers/controller1/ 中运行,那么“myPage.html”将解析到同一个目录——controllers/controller1/myPage.html——我宁愿干净地分开我的Python 代码和模板。
我一起破解的解决方案感觉...... hacky:
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 的无限服务器场中。那么有什么更好的方法呢?