Проблемы с обслуживанием статических файлов в CherryPy 3.1 - PullRequest
3 голосов
/ 23 марта 2010

У меня возникли проблемы с обслуживанием статической таблицы стилей XML для сопровождения некоторых динамически генерируемых выходных данных из веб-приложения CherryPy. Даже мой тестовый пример, обслуживающий статический текстовый файл, терпит неудачу.

Статический файл 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. Есть мысли или предложения?

Приветствия

Simon

Ответы [ 3 ]

4 голосов
/ 24 марта 2010

cherrypy.config.update должен получать только одноуровневый словарь (в основном server.* записей), но вы передаете ему многоуровневый словарь настроек, который действительно должен быть для каждого приложения (и поэтому передается tree.mount ).

Переместите эти [/] и [/static] разделы из вашего site.config файла в ваш ucac3.config файл, и он должен нормально работать.

3 голосов
/ 23 марта 2010

Я работаю со статическими файлами:

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

cherrypy.tree.mount(MyApp(), '/', config=config)
1 голос
/ 28 апреля 2010

У меня похожая настройка. Допустим, я хочу, чтобы корень моего сайта был 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 и обновлять ссылки.

...