cherrypy,服务css文件,错误的路径

时间:2014-11-01 10:22:44

标签: python path cherrypy static-content

我有一个问题是在使用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?

提前致谢

1 个答案:

答案 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)