2014-11-01 58 views
0

我有一个问题,加载我的CSS与CherryPy管理的HTML页面。 这是我的情况:cherrypy,服务的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' 

但根+ dir是正确的道路(用户/ MYPC /桌面/数据/ CSS) 哪里我错了,为什么我不能通过浏览器打开我的CSS?

在此先感谢

回答

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) 
+0

完美!谢谢!我只需要将根部分添加到配置! – user2174050 2014-11-04 16:52:50