2012-05-24 87 views
2

我尝试了很多东西,并且Google搜索了几个小时,但无法解决我的问题。使用CherryPy加载静态内容

配置文件:

[/] 
tools.staticdir.root = "/Users/phil/Dropbox/Projects/AppName" 

[/main.css] 
tools.staticfile.on = True 
tools.staticfile.filename = "/Users/phil/Dropbox/Projects/AppName/css/main.css" 

[/images] 
tools.staticdir.on = True 
tools.staticdir.dir = "images" 

CherryPy的代码:

import cherrypy, os 
class AppName(object): 
def index(self): 
    return "<img src='images/logo.jpeg'>" 
index.exposed = True 

cherrypy.config.update('/Users/phil/Dropbox/Projects/AppName/conf/AppName.config') 
cherrypy.quickstart(AppName()) 

我的问题是,它不工作,我试着用组合的路径等,但图像和CSS赢得了一切'加载时,我做了像返回'“

这是我加载我的应用程序时得到的错误:

127.0.0.1 - - [24/May/2012:22:28:47] "GET /images/logo.jpeg HTTP/1.1" 404 1268 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5" 
+0

添加一些关于您实际看到的行为的细节会非常有帮助。你的问题到底是什么? –

+0

对不起,我更新了 – philipp

+0

“我的问题是它不起作用”并不是对问题非常有帮助的总结。你应该发布一些代码,以及你得到的错误。 –

回答

5

不知道是什么问题,但这个工程:

[/] 
tools.staticdir.root = "/Users/phil/Dropbox/Projects/AppName" 

[/images] 
tools.staticdir.on = True 
tools.staticdir.dir = "images" 

开始应用与:

cherrypy.quickstart(AppName(), '/', 'AppName.config') 

CherryPy的代码:

def index(self): 
    return "<img src='/images/logo.jpeg'>" 
index.exposed = True 

我觉得/图像之前也很重要。感谢所有

3

查看Cherrypy手册的Serving Static Content部分,看看它是否可以帮助您。

或者,以下是我用来传递静态内容之前的内容 - main()中的字典。

conf = { 
     '/': 
     {'tools.staticdir.root': os.path.dirname(os.path.abspath(__file__))}, 
      '/css': { 
      'tools.staticfile.on': True, 
      'tools.staticfile.filename': os.path.join(os.path.dirname(os.path.abspath(__file__)), 'css/') 
     } 
     } 
cherrypy.quickstart(AppName(), config=conf) 
+0

我试过,但我得到了同样的错误,我也阅读手册,并尝试所有它,但没有任何工作。在Windows PC上使用不同的文件,同样的错误 – philipp

2

添加到您的配置文件:

[/] 
tools.staticdir.debug: True 
log.screen: True 

你应该马上就能缩小问题了。

+0

如果我添加到配置没有任何改变没有日志文件或终端中的日志输出所以我想加载配置文件有问题?这直接作为字典 – philipp

0

我花了一段时间让它在Windows上工作,所以我希望分享什么(当前)工作会很有帮助。我正在使用cherrypy.quickstart(website(), '/', "server.conf")来启动服务器。

我确实发现我必须手动指定js中的子文件夹。

## Server Configuration 
[global] 
server.socket_port = 3030 
#engine.autoreload.on = False #Might as well turn off when working on HTML 
log.error_file = "H:\\My Documents BACKED UP\GitProjects\website\logfile" 

[/] 
tools.staticdir.debug = True 
log.screen = True 
tools.sessions.on = True 

[/js] 
tools.staticdir.on = True 
tools.staticdir.dir = "H:\\My Documents BACKED UP\GitProjects\website\js" 

[/js/vendor] 
tools.staticdir.on = True 
tools.staticdir.dir = "H:\\My Documents BACKED UP\GitProjects\website\js\\vendor" 

[/img] 
tools.staticdir.on = True 
tools.staticdir.dir = "H:\\My Documents BACKED UP\GitProjects\website\img" 

[/css] 
tools.staticdir.on = True 
tools.staticdir.dir = "H:\\My Documents BACKED UP\GitProjects\website\css"