gpt4 book ai didi

python - CherryPy 似乎无法找到 CSS 脚本(静态或绝对路径)

转载 作者:太空宇宙 更新时间:2023-11-04 01:27:42 25 4
gpt4 key购买 nike

我正在使用 cherryPy 框架为我的网站提供服务,但它似乎无法通过静态路径或绝对路径找到我的 css 脚本。如果我只是通过浏览器转到 index.tmpl 文件,css 脚本工作正常,但是当我通过 cherrypy 请求它时,它不使用 css 脚本。

根目录结构:

site.py
template/index.tmpl
static/css/main.css

网站.py

import sys
import cherrypy
import os
from Cheetah.Template import Template

class Root:
@cherrypy.expose
def index(self):
htmlTemplate = Template(file='templates/index.tmpl')
htmlTemplate.css_scripts=['css/main.css']
return str(htmlTemplate)



# On Startup
current_dir = os.path.dirname(os.path.abspath(__file__)) + os.path.sep

cherrypy.config.update({
'environment': 'production',
'log.screen': True,
'server.socket_host': '127.0.0.1',
'server.socket_port': 2000,
'engine.autoreload_on': True,
'/':{
'tools.staticdir.root' : current_dir,
},
'/static':{
'tools.staticdir.on' : True,
'tools.staticdir.dir' : "static",
},
})

cherrypy.quickstart(Root())

模板/index.tmpl

<!DOCTYPE html>
<html>
<head>
#for $script in $css_scripts:
<link rel="stylesheet" href="$script" type="text/css" />
#end for
<link rel="stylesheet" href="C:/ABSOLUTE/PATH/main.css" type="text/css" />
</head>
<body>
<! MY HTML CODE IS HERE>
</body>
</html>

我做错了什么?

编辑
我尝试使用 static/css/main.css 作为静态路径
我也试过相对路径,相对于 site.py 和相对于 index.tmpl

这是我得到的错误:

GET http://localhost:2000/static/css/main.css 404 (Not Found)  

最佳答案

我不确定为什么会这样,但在尝试了一百万次之后,这就是解决问题的方法。如果有人知道为什么那么请赐教。

  • 我更改了 config 字典以包含所有 global 变量在子词典下。
  • 我摆脱了 cherrypy.config.update() 函数并将配置直接提供给 cherrypy.quickstart()

这里是修改后的代码:

import sys
import cherrypy
import os
from Cheetah.Template import Template

class Root:
@cherrypy.expose
def index(self):
htmlTemplate = Template(file='templates/index.tmpl')
htmlTemplate.css_scripts=['static/css/main.css']
return str(htmlTemplate)

# On Startup
current_dir = os.path.dirname(os.path.abspath(__file__)) + os.path.sep
config = {
'global': {
'environment': 'production',
'log.screen': True,
'server.socket_host': '127.0.0.1',
'server.socket_port': 2000,
'engine.autoreload_on': True,
'log.error_file': os.path.join(current_dir, 'errors.log'),
'log.access_file': os.path.join(current_dir, 'access.log'),
},
'/':{
'tools.staticdir.root' : current_dir,
},
'/static':{
'tools.staticdir.on' : True,
'tools.staticdir.dir' : 'static',
},
}
cherrypy.quickstart(Root(), '/', config)

关于python - CherryPy 似乎无法找到 CSS 脚本(静态或绝对路径),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16629367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com