无法在python加载的模板中引用css样式表

时间:2012-11-24 16:49:44

标签: python bottle

我是使用Python的新手,在尝试从.tpl文档中引用样式表时遇到了问题。 我的python,template和css文件都在同一个目录中,但是当我使用CMD将页面加载到“localhost:8080”时,它会显示没有应用样式的模板。

在我的模板文档index.tpl中,我引用了三个样式表:

<link rel="stylesheet" type="text/css" href="demo.css" />
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="animate-custom.css" />

我的python文件输出模板:index.py:

from bottle import route,template,debug,run
import sqlite3

@route('/')
def player():
    return template('index.tpl')

debug(True)
run(reloader=True)

1 个答案:

答案 0 :(得分:8)

我没有使用过瓶子,但是大多数Web框架都要求你将css / js / images放在一个特定的目录中(通过配置设置)。通常它被称为“静态”或类似的东西。

我敢打赌,如果您尝试直接在浏览器中加载这些CSS文件:

http://localhost:8080/demo.css 
你得到404.

您目前设置的方式就是为传统的PHP / CGI工作做的事情 - 您的Web服务器正在寻找磁盘上的文件并为它们提供服务。框架(通常)不会那样工作 - 您设置了路由规则。

你用@route('/')装饰器做到了 - 通过设置它,你告诉瓶子“对http:// localhost:8080 /的任何请求应该运行播放器功能并返回它生成的任何内容。”请注意,您尚未为css文件设置任何规则。

另一种可能性是你没有在HTML中正确引用CSS文件。如果您在直接加载CSS文件时没有获得404,请发布HTML,我们可以看一下。

编辑:在瓶子doc:

中找到了这个

http://bottlepy.org/docs/dev/tutorial.html#routing-static-files

不会自动提供图像或CSS文件等静态文件。您必须添加一个路由和一个回调来控制哪些文件被提供以及在哪里找到它们:
from bottle import static_file
@route('/static/<filename>')
def server_static(filename):
  return static_file(filename, root='/path/to/your/static/files')