2014-02-15 29 views
2

長時間監聽,首次調用者。Google App Engine,Jinja2 CSS樣式表未加載(404)

我對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> 

我跑了我的main.css通過http://jigsaw.w3.org/css-validator/沒有任何問題,所以我不會讓你感到厭煩。

爲什麼我仍然得到我的/stylesheets/main.css 404?

+0

至於我,只是最終工作的事情是這個[解決方案] [1] [1]:http://stackoverflow.com/a/31591467/1665739 – smoothBlue

回答

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 reference

+0

問題解決了!非常感謝。這個bug只是_killing_我。我保證在再次發佈之前,我會一直閱讀參考指南。 :) –