【问题标题】:Google App Engine: how to have static & dyamic files with same parent dir? e.g. dir/css & dir/python?Google App Engine:如何拥有具有相同父目录的静态和动态文件?例如目录/css & 目录/python?
【发布时间】:2018-06-10 18:01:04
【问题描述】:

因此,对于一个项目,我需要将代码分组到 3 个父文件夹 - SourceA、SourceB 和 SourceC,具体取决于代码是我自己的、部分是我自己的还是其他人的。这 3 个文件夹中还有一个 python、javascript 和 misc(包含 HTML 和其他任何内容)。例如,结构可以用图形表示如下:

--来源A

----蟒蛇

----javascript

----杂项

--来源B

----蟒蛇

----javascript

----杂项

--来源C

----蟒蛇

----javascript

----杂项

同样,我的 app.yaml 文件如下所示。在本地运行,这完美地工作,相应地显示静态和动态文件,但是,当部署在 Google App Engine 上时,只抛出 TemplateNotFound 错误,可能是因为应用引擎将父目录(例如 SourceA)视为静态路径:

runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /SourceA/misc
  static_dir: SourceA/misc
- url: /SourceB/misc
  static_dir: SourceB/misc
- url: /SourceC/misc
  static_dir: SourceC/misc
- url: /SourceA/javascript
  static_dir: SourceA/javascript
- url: /SourceB/javascript
  static_dir: SourceB/javascript
- url: /SourceC/javascript
  static_dir: SourceC/javascript
- url: /.*
  script: SourceA.python.main.app

如果我运行它,我会得到一个 TemplateNotFound 错误,这是由 Flask 中的 render_template() 函数(它在幕后使用 Jinja)以及当我尝试使用 Jinja 中的 .render() 函数时抛出的。相反,如果我删除所有静态处理程序只是为了测试原理,python 代码将再次按预期工作......但当然不会提供静态文件......即通过将我的 app.yaml 更改为

runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
  script: SourceA.python.main.app

虽然我可以通过简单地在 SourceA/B/C 目录之外创建一个静态目录来解决这个问题并在 apppot 上拥有一个完整运行的网站,但这并不理想,因为它不遵守我应该遵循的规范

无论如何,希望我已经解释了这个问题,如果有人知道这是否可能,那么我将不胜感激!

谢谢

【问题讨论】:

  • 离题,但奇怪的是,当部署在应用程序引擎上时,似乎静态文件将在没有在 app.yaml 中指定静态处理程序的情况下加载......但如果静态文件将不会被加载处理程序在本地运行时不是特定的...
  • 我认为template not found 错误与您的网址映射无关。你的templates 目录在哪里?

标签: python google-app-engine templates directory yaml


【解决方案1】:

如果您的应用程序在开发服务器上正常运行,则意味着问题只是文件存在于声明为静态的目录中,默认情况下该目录是应用程序不可访问的。将application_readable 标志添加到静态目录的处理程序配置将解决问题,请参阅handlers 表中的相应行。

但一般来说,将应用代码与静态项目混合并不是一个好主意。

【讨论】:

    猜你喜欢
    • 2012-02-02
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多