在 Google 应用引擎 Python 中提供静态 html
Posted
技术标签:
【中文标题】在 Google 应用引擎 Python 中提供静态 html【英文标题】:Serving static html in Google app engine Python 【发布时间】:2011-08-07 07:54:45 【问题描述】:我无法为我的 Python 加载静态 .html
页面
应用程序。当我单击 index.html 之类的链接时,我得到一个空白页面,并且在服务器上记录了 404 错误。这对于其他静态 .html
文件(例如 about.html)也是如此。
应用程序可以在静态文件中运行。我试过看 很多地方,但我似乎无法获得 .html 页面。即
信息 2011-04-16 17:26:33,655 dev_appserver.py:3317] “获取 / terms.html HTTP/1.1" 404 -
yaml:
application: quote
version: 1
runtime: python
api_version: 1
handlers:
- url: /index\.html
script: index.py
- url: /
script: index.py
- url: /(.*\.(html))
static_files: static/\1
upload: static/HTML/(.*\.(html))
- url: /favicon.ico
static_files: static/images/favicon.ico
upload: images/favicon.ico
mime_type: image/x-icon
- url: /css
static_dir: static/css
- url: /images
static_dir: static/images
- url: /js
static_dir: static/js
我的静态文件位于 static/HTML 中,index.html 位于主文件夹中。
这个我也试过了,但是好像没什么区别:
- url: /favicon.ico
static_files: static/images/favicon.ico
upload: images/favicon.ico
mime_type: image/x-icon
- url: /css
static_dir: static/css
- url: /images
static_dir: static/images
- url: /js
static_dir: static/js
- url: /(.*\.(html))
static_files: static/\1
upload: static/HTML/(.*\.(html))
- url: /index\.html
script: index.py
- url: /
script: index.py
【问题讨论】:
好的,Tha 不知道,我已经完成了静态工作。现在我遇到了添加另一个不起作用的脚本处理程序的额外问题。 【参考方案1】:将您的 HandlerScripts 放在静态目录处理部分的下方。 IOW,把它移到最后。
- url: /index\.html
script: index.py
- url: /
script: index.py
【讨论】:
谢谢,但这没什么区别。这是我所拥有的: - url: /favicon.ico static_files: static/images/favicon.ico 上传: images/favicon.ico mime_type: image/x-icon - url: /css static_dir: static/css - url : /images static_dir: static/images - url: /js static_dir: static/js - url: /(.*\.(html)) static_files: static/\1 上传: static/HTML/(.*\.(html )) - url:/index\.html 脚本:index.py - url:/ 脚本:index.py 这里的顺序无关紧要 - 处理程序按照它们列出的顺序进行匹配,并且没有一个处理程序与其他任何处理程序匹配。 @Nick - 我想知道他的动态处理程序是否正在掩盖静态处理程序的路径(相当常见的prb)。我在下面读到静态需要更正的路径。 @SenthilKumaran +1 这已经让我死了好几个小时。谢谢。【参考方案2】:在您的 static_files 路径中添加 /HTML
:
- url: /(.*\.(html))
static_files: static/HTML/\1
upload: static/HTML/(.*\.(html))
【讨论】:
@Dave 您还定义了一个处理程序以匹配/index.html
与Python 脚本index.py
- 这样即使您有一个文件static/HTML/index.html
,该URL 也将由一个动态处理程序提供服务。 【参考方案3】:
您不必在 yaml 文件中单独定义每个目录
handlers:
- url: /static
static_dir: my_application/static
然后在您将使用 django 呈现的相关 html 文件中,您可以调用静态内容,例如
<script src="/static/less_lib.min.js"></script>
【讨论】:
此示例的静态文件夹应位于应用的根文件夹下。 是的,我可以这样做,但我怀疑这会解决手头的问题。另外,我的规模很小,在我的情况下,不需要在 html 中使用额外的 /static 。不过感谢您的建议。【参考方案4】:您必须正确缩进您的 YAML。
提供
脚本级别不正确
handlers:
- url: /index\.html
script: index.py
json 等价物
"handlers": [
"url": "/index\\.html"
],
"script": "index.py"
缩进
脚本在正确的级别
handlers:
- url: /index\.html
script: index.py
json 等价物
"handlers": [
"url": "/index\\.html",
"script": "index.py"
]
Online YAML Parser
【讨论】:
文件中的所有内容都正确缩进。在这里,格式被扭曲了。 @dave,我想我现在需要更加努力了。以上是关于在 Google 应用引擎 Python 中提供静态 html的主要内容,如果未能解决你的问题,请参考以下文章
如何在类似于应用引擎的Google Compute引擎上部署应用?
是否有任何可用的解决方案为 Google 应用引擎提供 xsrf/csrf 支持?