3

我在提供静态 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'

current_dir = os.path.dirname(os.path.abspath(__file__))在哪里conesearch.py

但是,我的简单测试页面(直接取自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。有什么想法或建议吗?

干杯,

西蒙

4

3 回答 3

4

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

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

于 2010-03-23T21:44:24.747 回答
3

我提供这样的静态文件:

config = {'/static':
                {'tools.staticdir.on': True,
                 'tools.staticdir.dir': PATH_TO_STATIC_FILES,
                }
        }

cherrypy.tree.mount(MyApp(), '/', config=config)
于 2010-03-23T07:42:06.940 回答
1

我有类似的设置。假设我希望我的站点的根位于http://mysite.com/site并且我的站点/应用程序的根位于/path/to/www

我的 server.cfg 中有以下配置设置,并且可以毫无问题地找到我的静态文件:

[global]
...
app.mount_point = '/site'
tools.staticdir.root = '/path/to/www/'
[/static]
tools.staticdir.on = True
tools.staticdir.dir = 'static'

我正在从静态目录中毫无问题地提供dojo文件等,以及css。我还使用 genshi 进行模板化,并使用 cherrypy.url() 调用来确保我的其他 URL 设置正确。这使我可以更改 app.mount_point 并更新我的链接。

于 2010-04-28T19:16:30.543 回答