python - Google App Engine 不提供静态文件

标签 python google-app-engine flask google-cloud-platform google-app-engine-python

我知道这个问题已经被问过几次了,但似乎没有一个解决方案有帮助。

我正在尝试使用 Flask 为我的网站提供一些基本的 HTML 和 CSS。 在 App Engine 上,Flask 正确提供模板,但无法在 static/css 文件夹中找到样式表(我在开发者控制台的日志中收到 404s)。

我项目的相关结构是这样的:

/app
    /static
        /css
            style.css
    /templates
        home.html

我使用的命令是:

render_template('home.html')

在主 python 文件中,

<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/style.css') }}">

在 html 中链接样式表。 我的 app.yaml 文件非常基础:

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: main.app
- url: /static
  static_dir: static
  expiration: "7d"

现在,当我在本地主机上运行它时,它工作正常,并且 url_for 函数正确获取样式表,但在 Google Cloud Platform 上却不行,尽管在“开发”选项卡中获得了正确的文件路径和正确的源代码,只有提供 HTML。 如果有帮助,这是我用来部署应用程序的命令:

 gcloud app deploy app.yaml --project my-project

我确定问题就在我面前,但我想不通。任何见解将不胜感激。提前谢谢你。

最佳答案

处理程序在 app.yaml 文件中的顺序很重要,你的 /static 永远不会被命中,因为它会被 /.* 模式首先,你需要颠倒他们的顺序。

它在本地主机上工作的事实可能是因为静态内容与应用程序代码一起可用,但部署在 GAE 上时情况并非如此 - 默认情况下,静态内容位于其他地方并且应用程序代码无法访问。

关于python - Google App Engine 不提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42963961/

相关文章:

python - 如何在 Pandas 的组中删除某种类型的值?

php - WordPress 忽略 Google App Engine PHP 上的 php.ini 设置

html - 使用 Python-Flask 使用来自 postgresql 数据库的数据填充 html 下拉列表

python - 使用 Python Flask 或其他框架输出多行字符串

python - 在 Ubuntu 18 上安装 MS QDK 以使用 python 运行 Q# -- "dotnet iqsharp install"步骤失败

Python date.today() 不返回本地日期

python - 如何使用 Plotly 中的直方图将所有异常值分入一个箱中?

java - 如果您在开发模式下运行 GAE 项目,实体会保存在哪里?

ios - Azure、AWS、同步服务、数据库和 iOS

python - Flask CORS - 重定向()上不存在访问控制允许来源 header