CherryPy配置以访问CSS文件

0 投票
1 回答
1099 浏览
提问于 2025-04-15 23:32

以下是我最近在CherryPy和CSS路径问题上遇到的情况,之前的问题已经得到了解答,但又出现了新的问题。

我有一个HTML页面,在浏览器中预览(通过编辑器/IDE),这个页面会调用一个CSS文件,这个CSS文件存放在一个与我的应用程序文件夹并行的css文件夹中(应用程序文件夹里有main.py和My.html文件)。为此,我在HTML头部使用了相对路径...

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

到目前为止一切都很好。然而,当我运行Main.py时,找不到CSS文件,页面看起来一团糟 :-( CP的配置文件中包含以下一行...

tools.staticdir.root = "my\app\folder"  # contains Main.py and My.html

但没有其他的staticdir声明,因为CP应该相对于静态根文件夹寻找..\css\commoncss.css(我这样理解对吗?)

我可以把CSS文件夹放在顶层文件夹(那样我可以用href="/css/commoncss"并声明/css为staticdir),但这样看起来不太好。或者CSS文件夹可以放在应用程序文件夹的子文件夹里,但我真的需要有自由度,可以把.css文件放在其他路径(可能会被多个应用共享)。

我真的想解决这个问题,因为否则HTML设计师就不能和Python程序员使用相同的模板,而不需要更改href指令。

任何帮助都将不胜感激。

艾伦

1 个回答

1

但是没有其他的staticdir声明,因为CP应该是相对于静态根文件夹去寻找..\\css\\commoncss.css(我说得对吗?)

你不能通过网址直接访问你的物理文件目录(静态目录),而且你也不应该这样做。

Cherrypy会根据你网址中的HTML文件位置来寻找css文件。如果你的HTML文件在根目录下,那这样是行不通的。如果它在,比如说:/stuff/blarg.html,那么它会从根目录开始寻找css文件夹。

我觉得直接给出一个绝对路径更简单,因为可以合理地假设css目录是在一个固定的位置:"/css/commoncss.css"

撰写回答