来自不同路径的CherryPy静态内容

时间:2013-06-27 07:03:41

标签: python web-applications cherrypy httpserver

我已阅读了一些问答load-static-content-with-cherrypy

但是,我无法弄清楚如何通过不同的路径共享它。

我有以下课程:

class Root(Base):
    @cherrypy.expose
    def index(self):
        return self.html_head()+self.header()+"Root"+self.footer()+self.html_end()

    @cherrypy.expose
    def help(self):
        return self.html_head()+self.header()+"HELP"+self.footer()+self.html_end()

配置文件是:

[global]
server.socket_host = "127.0.0.1"
server.socket_port = 8080
server.thread_pool = 10

[/]
tools.staticfile.root = "/path/to/app/"

[/css/style201306.css]
tools.staticfile.on = True
tools.staticfile.filename = "css/style201306.css"

从/ help访问css时出现404错误。我必须为我想要提供css文件的类中的每个方法添加一个[path]条目吗?或者我必须使用[global]标签,尽管我可能不想在其他应用程序中使用它? app config和路径配置条目有什么区别?直到知道我认为这是一个有两个路径的应用程序(“/”和“/ help”)

我传递的配置如下:

# Configuration
import os.path
tutconf = os.path.join(os.path.dirname(__file__), 'myconf.conf')
cherrypy.quickstart(root, config=tutconf)

两个网页都以相同的方式加载CSS(实际上,代码是相同的):

css/style201306.css

1 个答案:

答案 0 :(得分:1)

问题在于你的html本身使用的是绝对URL,没有理由在相同内容时使用相对url,而不是:

<link rel="stylesheet" type="text/css"  href="css/style201306.css" />

使用

<link rel="stylesheet" type="text/css"  href="/css/style201306.css" />

否则浏览器会附加当前网址,例如,如果当前网址为/help,则会尝试获取:

/help/css/style201306.css