Cherrypy 和 JS,找不到图像
Cherrypy and JS, can't find image
我有一个简单的 Cherrypy 脚本,目前只提供一个页面。我希望页面能够动态显示图像。为此我写了一个简单的 JS 脚本。但是,当我尝试 运行 页面时,它找不到图像。代码是 ~/image_player/test_app.py
中的 运行,图片位于 ~/image_player/app/public
。静态路径见python代码:
import cherrypy
import os
import sys
class image_player(object):
@cherrypy.expose
def index(self):
return open('app/index.html')
if __name__ == '__main__':
if len(sys.argv) == 2:
port = int(sys.argv[1])
else:
port = 3030
host = '0.0.0.0'
conf = {
'/': {
'tools.sessions.on': True,
'tools.staticdir.root': os.path.abspath(os.getcwd())
},
'/query': {
'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
'tools.response_headers.on': True,
'tools.response_headers.headers': [('Content-Type', 'text/plain')],
},
'/static': {
'tools.staticdir.on': True,
'tools.staticdir.dir': 'app/public'
},
'/js': {
'tools.staticdir.on': True,
'tools.staticdir.dir': 'app/js'
}
}
webapp = image_player()
# Configure server and port
cherrypy.config.update({'server.socket_host': host,
'server.socket_port': port})
cherrypy.quickstart(webapp, '/', conf)
这是包含 js 的 index.html
:
<!DOCTYPE html>
<html>
<head>
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
hello
<div id="imageDiv"></div>
<script>
var par = document.getElementById('imageDiv');
var img = document.createElement('img');
img.src = '/LPROFILE.jpg';
par.appendChild(img);
</script>
</body>
</html>
我得到的错误是 GET http://hostname/LPROFILE.jpg 404 (Not Found)
我显然在这里遗漏了一些简单的东西,但我不确定是什么。
鉴于您显示的配置,静态文件在 /static
路径下提供,这意味着 app/public
下的所有文件(相对于您启动服务器的初始目录)将可从 http://hostname/static/
访问,如果是 LPROFILE.jpg
,则应在以下位置可用:http://hostname/static/LPROFILE.jpg
它适用于我 (win x64):
conf = {
'/': {
'tools.sessions.on': True,
'tools.staticdir.root': os.path.abspath(os.getcwd())
},
'/css': {
'tools.staticdir.on': True,
'tools.staticdir.dir': './css'},
'/img': {
'tools.staticdir.on': True,
'tools.staticdir.dir': './img'},
'/js': {
'tools.staticdir.on': True,
'tools.staticdir.dir': './js'},
'global': {
'environment': 'production',
'log.screen': True,
'server.socket_host': '127.0.0.1',
'server.socket_port': 8080,
'engine.autoreload_on': True,
}}
例如:
url(../img/backgr.jpg)
我有一个简单的 Cherrypy 脚本,目前只提供一个页面。我希望页面能够动态显示图像。为此我写了一个简单的 JS 脚本。但是,当我尝试 运行 页面时,它找不到图像。代码是 ~/image_player/test_app.py
中的 运行,图片位于 ~/image_player/app/public
。静态路径见python代码:
import cherrypy
import os
import sys
class image_player(object):
@cherrypy.expose
def index(self):
return open('app/index.html')
if __name__ == '__main__':
if len(sys.argv) == 2:
port = int(sys.argv[1])
else:
port = 3030
host = '0.0.0.0'
conf = {
'/': {
'tools.sessions.on': True,
'tools.staticdir.root': os.path.abspath(os.getcwd())
},
'/query': {
'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
'tools.response_headers.on': True,
'tools.response_headers.headers': [('Content-Type', 'text/plain')],
},
'/static': {
'tools.staticdir.on': True,
'tools.staticdir.dir': 'app/public'
},
'/js': {
'tools.staticdir.on': True,
'tools.staticdir.dir': 'app/js'
}
}
webapp = image_player()
# Configure server and port
cherrypy.config.update({'server.socket_host': host,
'server.socket_port': port})
cherrypy.quickstart(webapp, '/', conf)
这是包含 js 的 index.html
:
<!DOCTYPE html>
<html>
<head>
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
hello
<div id="imageDiv"></div>
<script>
var par = document.getElementById('imageDiv');
var img = document.createElement('img');
img.src = '/LPROFILE.jpg';
par.appendChild(img);
</script>
</body>
</html>
我得到的错误是 GET http://hostname/LPROFILE.jpg 404 (Not Found)
我显然在这里遗漏了一些简单的东西,但我不确定是什么。
鉴于您显示的配置,静态文件在 /static
路径下提供,这意味着 app/public
下的所有文件(相对于您启动服务器的初始目录)将可从 http://hostname/static/
访问,如果是 LPROFILE.jpg
,则应在以下位置可用:http://hostname/static/LPROFILE.jpg
它适用于我 (win x64):
conf = {
'/': {
'tools.sessions.on': True,
'tools.staticdir.root': os.path.abspath(os.getcwd())
},
'/css': {
'tools.staticdir.on': True,
'tools.staticdir.dir': './css'},
'/img': {
'tools.staticdir.on': True,
'tools.staticdir.dir': './img'},
'/js': {
'tools.staticdir.on': True,
'tools.staticdir.dir': './js'},
'global': {
'environment': 'production',
'log.screen': True,
'server.socket_host': '127.0.0.1',
'server.socket_port': 8080,
'engine.autoreload_on': True,
}}
例如: url(../img/backgr.jpg)