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> 标签

ImportError:没有名为 jinja2 的模块

在 Google-App-Engine 中使用 HSQLDB

Google Cloud 中的 Google Compute Engine、App Engine 和 Container Engine 有啥区别?

连接 Google App Engine 和 Google Compute Engine

Google App Engine Flexible 和 Google Container Engine 之间的区别?