Вопрос по cherrypy, python – Использование отображений в CherryPy

2

в& quot; Отправка / Другие диспетчеры & quot; В разделе документации CherryPy приведен пример определения сопоставления регулярного выражения в стиле Django, но нет указания, как его прикрепить кcherrypy.tree.

Как вы должны зарегистрировать это отображение?

Edit: На основе& quot; сопоставление URL-адресов regex & quot; нить вcherrypy-users Группа Google, я мог бы выяснить, что для прикрепления просмотров с помощью регулярных выражений, вы должны использоватьroutesв стиле отображения с использованиемcherrypy.dispatch.RoutesDispatcher класс вроде так:

def hello(name='stranger'):
    """Sample view."""
    return 'Hello, %s!'%name

dispatch = cherrypy.dispatch.RoutesDispatcher()
dispatch.connect('hello-1', '/hello', hello)
dispatch.connect('hello-2', '/hello/{name:([^/]+)}', hello)
cherrypy.tree.mount(None, config={
        '/': {
             'request.dispatch': dispatch,
            }
        })

Обратите внимание{argument-name:regular-expression} синтаксис в шаблоне URL.

Есть ли способ указать шаблоны маршрутов, используя синтаксис списка пар, как показано в документации CherryPy?

Ваш Ответ

1   ответ
0

Никакого дополнительного шага не требуется. Во время запросаcherrypy.tree выполняет первый этап маршрутизации, на котором входящий запрос сопоставляется приложению с использованием сопоставления пути к приложению. Когда вы звонитеtree.mount(root=None, script_name='/', config=conf) при запуске Tree создает приложение cherrypy.Application для вас за кулисами и монтирует его на «/».

Как только Приложение найдено, его конфигурация вступает во владение, и & quot; request.dispatch & quot; Конфигурация для примера приложения в документации говорит, что "используйте RoutesDispatcher для всех URI" в этом приложении ". Этот экземпляр RoutesDispatcher затем передаст управление запросом соответствующему контроллеру.

The regex example in the docs isn't even that well-developed. You'd need to write a Dispatcher which uses it. That process "only" needs to find the handler and collect request.config, but those two activities can be very complex depending on the dispatch style chosen. See the existing dispatchers for inspiration.

Уже добавлено :)
Ах! Теперь я понимаю ваш вопрос :) Это & quot; пример & quot; не является действительно предписывающим, он просто показывает, как может выглядеть сама карта для решения на основе регулярных выражений. Чтобы закончить, вам нужно написать подкласс Dispatcher, который использовал бы его для возврата обработчика страницы и сбора конфигурации для текущего запроса. Этот процесс настолько различен для разных стилей, что трудно показать вам, как для конкретного стиля, не делая все это самостоятельно. ;) Но есть существующие диспетчеры в_cpdispatch.py чтобы помочь начать.
Я уже посмотрел на_cpdispatch.py и определенно не нашел диспетчера, поддерживающего такой список отображений обработчиков регулярных выражений :-) Так что, в основном, CherryPy не имеет встроенной поддержки диспетчера стиля Django, как в примере. Я понял Если вы укажете это в своем ответе, я приму это. André Caron
Вы смотрели наthe example Я упоминал?mappings переменная не передаетсяcherrypy.tree. André Caron

Похожие вопросы