无法从cherrypy提供静态文件

发布于 2024-10-25 17:36:19 字数 567 浏览 4 评论 0原文

我开始学习cherrypy,但遇到了障碍。我无法获得静态文件来挽救我的生命。我收到 404。找不到路径“/static”。我已经用 google 搜索过,但尚未找到解决方案。我想做的就是在 http://localhost:8080/static

建议提供文件?

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

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 http://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()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

戏蝶舞 2024-11-01 17:36:19

一些想法:

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

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().
源来凯始玺欢你 2024-11-01 17:36:19

试试这个

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",
    }
}

并开始于

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

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() 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文