【问题标题】:CherryPy can't display imagesCherryPy 无法显示图像
【发布时间】:2012-09-14 08:35:25
【问题描述】:

我尝试了大约 5 个小时来在我的网页上显示图像。 我的代码是这样的:

import os
import cherrypy

file_path = os.getcwd().replace("\\", "/")

class Home:
    def index(self):
        return """<img src="img/logolong.jpg" alt="Main Page" />"""
    index.exposed = True

if __name__ == "__main__":
    cherrypy.server.socket_host = "127.0.0.1"
    cherrypy.server.socket_port = 50505
    config = {"/static":
                        {"tools.staticdir.on": True,
                         "tools.staticdir.dir": file_path,
                        },
                      "/images":
                        {"tools.staticdir.on": True,
                        "tools.staticdir.dir": file_path+"/img"}
                    }

    cherrypy.tree.mount(Home(), "/", config=config)
    cherrypy.engine.start()
    cherrypy.engine.block()

我到处搜索并尝试了一切。我正在使用 Google Chrome 和 Windows7。

非常感谢您的帮助!

【问题讨论】:

  • 这是一个你应该问 CherryPy 的作者的问题。
  • 当您尝试直接访问图像时会发生什么?是 404 吗?
  • 您不是在/img/img/logolong.jpg 中寻找图片吗?配置设置看起来像是设置图像的位置,因此在索引中引用它时不需要img/
  • 仅供参考 - 您可以装饰您的处理程序以公开它们。 @cherrypy.expose 上面的 Home 类可以替换 index.exposed = True

标签: python google-chrome windows-7 cherrypy


【解决方案1】:

您的代码在 URI /static/images/img/logolong.jpg 处公开 logolong.jpg,但您的 HTML 表示它应该位于 /img/logolong.jpg。您需要以一种或另一种方式调和这些。要保持 HTML 原样并修复配置,您应该将其更改为:

config = {
    "/img": {
        "tools.staticdir.on": True,
        "tools.staticdir.dir": os.path.join(file_path, "img"),
    }
}

(这样使用os.path.join意味着可以摆脱上面的replace("\\", "/")

这将在 URI /img/logolong.jpg 处为 file %cd%\\img\\logolong.jpg 提供服务。

【讨论】:

    【解决方案2】:

    尝试更改此行...

    return """<img src="img/logolong.jpg" alt="Main Page" />"""\
    

    到这一行...

    return """<img src="/logolong.jpg" alt="Main Page" />"""
    

    安德鲁

    【讨论】:

      猜你喜欢
      • 2013-12-31
      • 2015-11-06
      • 1970-01-01
      • 2016-06-28
      • 2012-06-30
      • 2019-12-29
      相关资源
      最近更新 更多