编程语言
首页 > 编程语言> > python – 在CherryPy 3.1中提供静态文件的问题

python – 在CherryPy 3.1中提供静态文件的问题

作者:互联网

我在提供静态XML样式表时遇到一些麻烦,以配合来自CherryPy Web应用程序的一些动态生成的输出.甚至我的服务静态文本文件的测试用例都失败了.

静态文件blah.txt位于我的应用程序根目录的/ static目录中.

在我的主站点文件中(conesearch.py​​包含CherryPy ConeSearch页面处理程序类):

import conesearch
cherrypy.config.update('site.config')
cherrypy.tree.mount(conesearch.ConeSearch(), "/ucac3", 'ucac3.config')
...

在site.config中我有以下选项:

[/]
tools.staticdir.root: conesearch.current_dir

[/static]
tools.staticdir.on: True
tools.staticdir.dir: 'static'

conesearch.py​​中的current_dir = os.path.dirname(os.path.abspath(__ file__))

但是,我的简单测试页面(直接从http://www.cherrypy.org/wiki/StaticContent开始)失败了404:

def test(self):
        return """
        <html> 
        <head>
        <title>CherryPy static tutorial</title>
        </head>
        <body>
        <a href="/static/blah.txt">Link</a>
        </body>
        </html>"""
test.exposed = True

它试图访问127.0.0.1:8080/static/blah.txt,据我估算应该是AOK.有什么想法或建议吗?

干杯,

西蒙

解决方法:

cherrypy.config.update应该只接收单级字典(主要是服务器.*条目),但是你传递的是一个多层次的设置字典,它应该是每个应用程序(因此传递给tree.mount) .

将那些[/]和[/ static]部分从您的site.config文件移动到您的ucac3.config文件,它应该可以正常工作.

标签:python,cherrypy
来源: https://codeday.me/bug/20190726/1546554.html