【问题标题】:External CSS Style sheet doesn't work when running on GAE在 GAE 上运行时,外部 CSS 样式表不起作用
【发布时间】:2012-05-10 02:05:30
【问题描述】:

我有 main.html 链接到 web.css,当我运行主文件时,它使用 CSS 运行良好,但是当我在谷歌应用引擎上运行整个东西时,它不应用 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)

【问题讨论】:

  • 你能发布你的 app.yaml 文件吗?您是否记得包含一个包含 web.css 的静态文件目录?
  • 嗨,我不知道我必须这样做..但现在可以了 :) 谢谢
  • 太棒了!我在下面为可能遇到您问题的任何人添加了答案。

标签: python google-app-engine jinja2


【解决方案1】:

对于偶然发现此问题的其他人,静态文件应使用static file handler 声明。例如,它为一个名为 css 的目录提供服务,它将应用程序目录根目录中的目录 css 映射到您的应用程序域根目录中的公开可用的 css 目录:

- url: /css
  static_dir: css

【讨论】:

  • 对于阅读此答案后仍有问题的任何人,让我补充一点,声明的顺序很重要(来自official doc模式匹配的第一个映射URL 是用于处理请求的 URL),因此您应该在 - url: /.* 声明之前添加它。
【解决方案2】:

将此添加到您的app.yaml

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

【讨论】:

  • @voscausa: lenik 的回答甚至 more 是正确的,因为它不需要(也没有)提及更改 OP 的 HTML 以使用以开头的绝对路径/css/ 而不是它现在使用的路径;无论如何,这个答案当然不值得投反对票。
猜你喜欢
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多