【问题标题】:Load Static Content with CherryPy使用 CherryPy 加载静态内容
【发布时间】:2012-05-24 20:11:16
【问题描述】:

我现在尝试了很多东西,我用谷歌搜索了几个小时,但我无法解决我的问题。

配置文件:

[/] 
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())

我的问题是它不起作用,我尝试了所有组合路径等方法,但是当我执行诸如 return '" 之类的操作时,图像和 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"

【问题讨论】:

  • 添加一些关于您实际看到的行为的详细信息会非常有帮助。你到底有什么问题?
  • “我的问题是它不起作用”对问题的总结并不是很有帮助。你应该发布一些代码,以及你得到的错误。
  • 已编辑所有代码和错误
  • logo.jpeg有什么权限?
  • 644。但是,如果我在普通的 html 文件中编写 html 并打开它,它就可以工作:(

标签: python cherrypy


【解决方案1】:

不确定问题是什么,但这有效:

[/]
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

我认为图像之前的 / 也很重要。谢谢大家

【讨论】:

    【解决方案2】:

    查看 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)
    

    【讨论】:

    • 我试过这个,但我得到了同样的错误。我还阅读了手册并尝试了所有方法,但没有任何效果。我现在在具有不同文件的 Windows Pc 上尝试过,同样的错误。
    【解决方案3】:

    将此添加到您的配置文件中:

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

    您应该能够立即缩小问题范围。

    【讨论】:

    • 如果我将它添加到配置中,没有任何变化。终端中没有日志文件或日志输出。所以我猜加载配置文件有问题?生病尝试将此直接加载为字典
    【解决方案4】:

    我花了一段时间让它在 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"
    

    【讨论】:

      猜你喜欢
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 2017-07-19
      • 2012-05-01
      • 1970-01-01
      • 2021-10-23
      相关资源
      最近更新 更多