2012-05-10 125 views
4

我有main.html鏈接到web.css,當我運行主文件時,它運行良好,但是當我在谷歌應用引擎上運行整個東西時,它不適用CSS。從GAE日誌我得到外部CSS樣式表在GAE上運行時不起作用

INFO  2012-05-10 01:58:46,526 dev_appserver.py:2891] "GET /web.css HTTP/1.1" 404 - 
INFO  2012-05-10 01:58:46,540 dev_appserver.py:2891] "GET /favicon.ico HTTP/1.1" 200 - 

這是我的html文件

<html> 
    <head> 
     <link rel="stylesheet" type="text/css" href="web.css"/> 
    </head> 
    <body> 
     <h1> Hi </h1> 
    </body> 
</html> 

這是我的代碼

import os 
import webapp2 
import jinja2 
import re 
from datetime import datetime 
from google.appengine.ext import db 
from utility_functions import valid_username, valid_password, valid_email 

class Handler(webapp2.RequestHandler):  
    def render(self, link, values={}): 
     je = jinja2.Environment(autoescape=True, loader=jinja2.FileSystemLoader(
      os.path.join(os.path.dirname(__file__), 'templates'))) 

     template = je.get_template(link) 
     self.response.out.write(template.render(values))   


class MainPage(Handler): 
    def get(self): 
     self.render('main.html') 


handlers = [('/', MainPage)] 
app = webapp2.WSGIApplication(handlers, debug=True) 
+1

你能發佈你的app.yaml文件嗎?你是否記得包含一個包含web.css的靜態文件目錄? –

+0

嗨,我不知道我必須這樣做..但現在工作:)謝謝 – Jae

+0

太棒了!我爲任何可能遇到您的問題的人添加了一個答案。 –

回答

7

對於任何人在這個問題是絆倒,靜態文件應聲明爲static file handler。例如,這提供了一個名爲CSS目錄,這在你Appspot上域的根目錄css映射在應用程序的根目錄下,以一個公開的css目錄:

- url: /css 
    static_dir: css 
+1

對於在閱讀此答案後仍然有問題的人,請允許我補充說明聲明的**順序**很重要(來自[官方文檔](https://developers.google.com/appengine/docs/python/config/) appconfig#Python_app_yaml_Required_elements):*模式匹配URL的第一個映射是用來處理請求的那個*),所以你應該在' - url:/.*'聲明之前添加它。 – psxls

4

添加到您的app.yaml

- url: /web.css 
    static_files: web.css 
    upload: web.css 
+0

Dan的答案是正確的 – voscausa

+1

@voscausa:lenik的答案甚至更*正確,因爲它不需要(也不會提及)改變OP的HTML以使用以'/ css /'開始的絕對路徑,而不是它現在使用的路徑;無論如何,這個答案肯定不值得讚揚。 – geoffspear