Google App Engine、Jinja2 CSS 样式表未加载 (404)
Posted
技术标签:
【中文标题】Google App Engine、Jinja2 CSS 样式表未加载 (404)【英文标题】:Google App Engine, Jinja2 CSS Stylesheets not loading (404) 【发布时间】:2014-03-14 16:52:20 【问题描述】:长时间聆听,第一次来电。
我在使用 Google App Engine、Jinja2 和 CSS 时遇到了一些令人沮丧、看似莫名其妙的问题。
我的模板正常工作,我的应用程序的功能正常工作(用户、博客文章等),但 CSS 文件在我的 Chrome 调试工具和我的 Google App Engine 日志中显示了一个又大又胖的 404。为什么我的 /stylesheets/main.css 没有加载?
亲爱的互联网,我很想知道这只是一个错字。我确定我只是个白痴。
这是我的文件目录:
stylesheets
main.css
templates
base.html
blog.html
front.html
login.html
newpost.html
signup.html
welcome.html
app.yaml
blogs.py
favicon.ico
index.yaml
main.py
users.py
utilities.py
这是我的 YAML 文件:
application: hello-udacity-5681
version: 1
runtime: python27
api_version: 1
threadsafe: yes
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: /.*
script: main.app
- url: /stylesheets
static_dir: stylesheets
libraries:
- name: webapp2
version: "2.5.2"
- name: jinja2
version: latest
这是我的 main.py:
import webapp2
import os
import jinja2
from google.appengine.ext import db
template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), autoescape = True)
class Handler(webapp2.RequestHandler):
def write(self, *a, **kw):
self.response.out.write(*a, **kw)
def render_str(self, template, **params):
t = jinja_env.get_template(template)
return t.render(params)
def render(self, template, **kw):
self.write(self.render_str(template, **kw))
class MainHandler(Handler):
def render_front(self):
self.render("base.html")
def get(self):
self.render_front()
这是我的 base.html:
<!DOCTYPE html>
<html>
<head>
<link type="text/css" rel="stylesheet" href="/stylesheets/main.css"/>
<title>Blog</title>
</head>
<body>
<a href="/" class="main-title">Blog</a>
</body>
</html>
我通过 http://jigsaw.w3.org/css-validator/ 运行我的 main.css 没有任何问题,所以我不会让你厌烦。
为什么我的 /stylesheets/main.css 仍然出现 404 错误?
【问题讨论】:
对我来说,最终唯一有效的就是这个[解决方案][1] [1]:***.com/a/31591467/1665739 【参考方案1】:您的app.yaml
处理程序部分应该是这样的
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: /stylesheets
static_dir: stylesheets
- url: /.*
script: main.app
在这种情况下,/stylesheets
模式将在 /.*
模式匹配适当的路径之前匹配。有关 URL 映射的更多信息以及您可以在 app.yaml 中指定的其他选项,请参阅app.yaml reference。
【讨论】:
解决了!太感谢了。这个错误只是杀死我。我保证在再次发帖之前我会一直阅读参考指南。 :)以上是关于Google App Engine、Jinja2 CSS 样式表未加载 (404)的主要内容,如果未能解决你的问题,请参考以下文章
使用 Google App Engine 和 Jinja2 允许 <br> 标签
在 Google-App-Engine 中使用 HSQLDB
Google Cloud 中的 Google Compute Engine、App Engine 和 Container Engine 有啥区别?