2011-03-25 413 views
5

我開始學習cherrypy,但我遇到了障礙。我無法獲取靜態文件來挽救我的生命。我得到了一個404. The path '/static' was not found.我google了但是還沒有找到解決方案。我想要做的是提供文件http://localhost:8080/static無法從cherrypy提供靜態文件

推薦?

import os 
import cherrypy 

class Root(object): 
    @cherrypy.expose 
    def index(self): 
     pass 

config = { 
    '/static':{ 
    'tools.staticdir.on': True, 
    'tools.staticdir.dir': os.path.join(os.path.dirname(__file__), 'static') 
    } 
} 

cherrypy.tree.mount(Root(), '/', config = config) 
cherrypy.engine.start() 

回答

6

一些想法:

  1. 在CherryPy的3.2+,嘗試tools.staticdir.debug = True,與log.screen = True或其他一些更優選的記錄設置相結合。這將比我在這個答案中猜到的任何東西都更有幫助。
  2. 嘗試tools.staticdir.dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'static'));它需要是絕對的(或者,如果.dir不是絕對的,則需要tools.staticdir.root)。
  3. 在CherryPy 3.1及以上版本中,您通常需要在engine.start()之後調用engine.block()。
+0

我添加了調試和日誌行,並且其檢查的路徑是絕對路徑。這裏是消息:'檢查文件:e:\\ python \\ cherrypyapp \\ static \\'我再次檢查了該路徑及其正確但我仍然得到404 – Kylee 2011-03-25 12:43:18

+1

你實際瀏覽到'http:// localhost:8080/static',就好像你想要在瀏覽器中獲取目錄列表一樣? staticdir工具不爲它提供的文件提供索引頁 - 你必須請求一個單獨的文件,而不是一個目錄。 – fumanchu 2011-03-26 01:44:40

+0

這是engine.block()做到了。謝謝! – Kylee 2011-03-26 12:21:14