我有一个问题是在使用CherryPy管理的html页面上加载我的CSS。 这是我的情况:
class HelloWorld(object):
@cherrypy.expose
def index(self):
return "Hello world!"
@cherrypy.expose
def sc(self):
Session = sessionmaker()
session = Session(bind=engine)
...
...
if __name__ == '__main__':
cherrypy.quickstart(HelloWorld(),config={
'/':
{'tools.staticdir.root': True,
'tools.staticdir.root': "Users/mypc/Desktop/data"},
'/css':
{ 'tools.staticdir.on':True,'tools.staticdir.dir':"/css" },
'/style.css':
{ 'tools.staticfile.on':True,
'tools.staticfile.filename':"/style.css"}
})
当我启动我的脚本时,有wrtten:
CherryPy Checker:
dir is an absolute path, even though a root is provided.
'/css' (root + dir) is not an existing filesystem path.
section: [/css]
root: 'Users/mypc/Desktop/data'
dir: '/css'
但root + dir是正确的路径(Users / mypc / Desktop / data / css) 哪里我错了,为什么我不能通过浏览器打开我的CSS?
提前致谢
答案 0 :(得分:1)
此处the relevant documentation section。它说:
CherryPy始终需要它将服务的文件或目录的绝对路径。 如果要配置多个静态部分但位于同一根目录中 目录,您可以使用以下快捷方式...
tools.staticdir.root
在其他作品中,当您提供tools.staticdir.root
时,所有基础tools.staticdir.dir
条目都不能是绝对的,即以斜杠开头,这是CherryPy Checker警告您的内容。
以下就足够了。只需将CSS文件放在目录中即可。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import cherrypy
path = os.path.abspath(os.path.dirname(__file__))
config = {
'global' : {
'server.socket_host' : '127.0.0.1',
'server.socket_port' : 8080,
'server.thread_pool' : 8
},
'/css' : {
'tools.staticdir.on' : True,
'tools.staticdir.dir' : os.path.join(path, 'css')
}
}
class App:
@cherrypy.expose
def index(self):
return 'Hello world!'
if __name__ == '__main__':
cherrypy.quickstart(App(), '/', config)