2014-02-15 21 views
0

我尝试使用Google App Engine,Python和Jinja2构建一个小博客。 我有指向同一个css文件3个不同的HTML文件:GAE python Jinja2多个HTML相同的CSS文件,但只有一个HTML被正确呈现

<link href="css/index.css" rel="stylesheet" type="text/css"> 

我的app.yaml有如下声明:

handlers: 
- url: /favicon\.ico 
    static_files: favicon.ico 
    upload: favicon\.ico 
- url: /css 
    static_dir: templates/css 

- url: .* 
    script: main.app 

libraries: 
- name: webapp2 
    version: "2.5.2" 
- name: jinja2 
    version: latest 

我的问题是只有我的HTML文件中的一个正确呈现!它们位于相同的文件夹中,即“模板”。 任何指向为什么发生这种情况? Thx

+0

什么其他2页乌尔克?它是否像http:// localhost:8080/abc/abc? –

+0

您应该使用绝对引用来链接到CSS资源。只要页面处于根级别,您拥有的内容就会中断。 –

+0

好吧,我找到了我的问题的解决方案,我的文件front.html保持与css/index.css,但在我的其他html文件,即newpost.html和permalink.html(所有3个html文件位于相同的文件夹'模板'),我将链接引用更改为/css/index.css。它解决了我的问题,但我不完全明白为什么,如果你有一个解释的链接,我会感兴趣,thx – Bondifrench

回答

1

GAE有点不同,你必须明确地告诉它你希望它提供静态文件:CSS,图像。等https://developers.google.com/appengine/docs/python/gettingstartedpython27/staticfiles

首先你在你的app.yaml处理程序应该是这个样子:

handlers: 
- url: /favicon\.ico 
    static_files: favicon.ico 
    upload: favicon\.ico 
- url: /stylesheets 
    static_dir: stylesheets 

的/样式表将包含你的CSS。现在,GAE会看到您想要为您的应用/ stlyesheets路径中的所有文件提供服务。

在这种情况下,你的文件结构应该是这样的:

your-app 
--main.py 
--app.yaml 
--stylesheets 
    --style.css 
--templates 
    --front.html 

现在,CSS是服了你刚才提到它在你的HTML

<link href="/stylesheets/style.css" rel="stylesheet" type="text/css" />