Google App Engine,Jinja2 CSS样式表未加载(404)

时间:2014-02-15 06:55:03

标签: google-app-engine python-2.7 yaml jinja2 webapp2

长时间听众,第一次来电。

我对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 个答案:

答案 0 :(得分:5)

您的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