开发者

Can't serve static files from cherrypy

开发者 https://www.devze.com 2023-02-19 09:50 出处:网络
I\'m starting to learn cherrypy but I\'ve run in to a roadblock. I can\'t get static files to save my life. I\'m getting a 404. The path \'/static\' was not found. I\'ve googled however have yet to fi

I'm starting to learn cherrypy but I've run in to a roadblock. I can't get static files to save my life. I'm getting a 404. The path '/static' was not found. I've googled however have yet to find a solution. All I want to do is serve files at htt开发者_Python百科p://localhost:8080/static

Suggetions?

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()


Some ideas:

  1. In CherryPy 3.2+, try tools.staticdir.debug = True, combined with log.screen = True or some other more preferred logging setup. That will help more than anything I can guess at in this answer.
  2. Try tools.staticdir.dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'static')); it needs to be absolute (or, if .dir is not absolute, then tools.staticdir.root needs to be).
  3. In CherryPy 3.1 and above, you usually need to call engine.block() after engine.start().


Try this

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

    "/favicon.ico": {
        'tools.staticfile.on': True,
        'tools.staticfile.filename': "favicon.ico",
        'tools.staticdir.on': True,
        'tools.staticdir.dir': "images",
    },
    '/robots.txt': {
        'tools.staticfile.on': True,
        'tools.staticfile.filename': "robots.txt",
        'tools.staticdir.on': True,
        'tools.staticdir.dir': "", },

    '/images': {
        'tools.staticdir.on': True,
        'tools.staticdir.dir': "images",
    },

    '/css': {
        'tools.staticdir.on': True,
        'tools.staticdir.dir': "css",
    },

    '/js': {
        'tools.staticdir.on': True,
        'tools.staticdir.dir': "js",
    }
}

And started with

if __name__ == "__main__":

    cherrypy.config.update(server_config)
    cherrypy.tree.mount(WebSpid(), config=web_config)

    if hasattr(cherrypy.engine, 'block'):
        # 3.1 syntax
        cherrypy.engine.start()
        cherrypy.engine.block() 
0

精彩评论

暂无评论...
验证码 换一张
取 消