Google App Engine:如何使用相同的父目录创建静态和动态文件?例如dir / css&dir / python?

问题描述 投票:0回答:1

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

--SourceA

- - 蟒蛇

---- JavaScript的

----杂项

--SourceB

- - 蟒蛇

---- JavaScript的

----杂项

--source

- - 蟒蛇

---- JavaScript的

----杂项

同样,我的app.yaml文件可以在下面看到。在本地运行,这非常有效,相应地显示静态和动态文件,但是,当部署在Google App Engine上时,只会抛出TemplateNotFound错误,可能是因为app引擎将父目录(例如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

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

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

虽然我可以通过简单地在SourceA / B / C目录之外创建一个静态目录来绕过这个并在appspot上有一个完全工作的站点,但这并不理想,因为它不遵守我认为的规范跟随

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

谢谢

python google-app-engine templates directory yaml
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.