【问题标题】:CherryPy static content from different paths来自不同路径的 CherryPy 静态内容
【发布时间】:2013-06-24 13:42:54
【问题描述】:

我读过一些问答,比如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] 标签,尽管我可能不想在其他应用程序中使用它?应用配置和路径配置条目有什么区别?直到知道我将其视为一个具有 2 条路径(“/”和“/help”)的应用程序

我正在传递如下配置:

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

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

css/style201306.css

【问题讨论】:

  • 此问题已在 ServerFault 中被标记为题外话。有人建议我把它移到这里。所以就在这里。

标签: python web-applications cherrypy httpserver


【解决方案1】:

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

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

使用

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

否则浏览器会追加当前URL,例如如果当前URL是/help,那么它会尝试获取:

/help/css/style201306.css

【讨论】:

    猜你喜欢
    • 2012-03-08
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多