Пирамида: Как получить маршруты всех приложений в представлении?

Я хочу увидеть все маршруты, которые есть в моем приложении. Возвратите их как ответ как пара ключей => значения:

'route1' => '{foo:\w+}'
'route2' => '{baz:\w+\d+}'
... and so on

Но я не знаю, как получить их в моем представлении. Например, это мое мнение. Я хочу вернуть карту маршрутов. Я сделаю это:

@view_config(route_name='route1')
def someView(request):
    routes = request.registry.settings.getRoutes()  ## what should I print here to get a map of routes?
    r = ''
    for k,v in sorted(routes.items()):
        r += str(k) + "=>" + str(v) + "<br/>";
    return Response(r)

E сть RoutesConfiguratorMixin класс с get_routes_mapper метод. Я попытался импортировать класс и вызвал его метод, но получил ошибку, что нет registry был в случае этого:

from pyramid.config.routes import RoutesConfiguratorMixin as Router

r = Router();
routes = r.get_routes_mapper();
## ... and the same code as above

Не работает

3 ответа

Есть 2 способа, один поддерживается (общедоступный) и один не поддерживается (частный).

Вариант № 1 заключается в использовании интроспектора и объясняется здесь.

Вариант № 2 заключается в том, чтобы использовать средство отображения маршрута (которое не является общедоступным API-интерфейсом) так, как это делает панель отладки пирамиды в своей панели маршрутов.

Pyramid устанавливает скрипт bin proutes для этой цели.

Установите pshell, затем pshell, чтобы войти в pshell с конфигурацией вашего приложения. затем беги

      print("\n".join([r.path for r in app.routes_mapper.routelist]))
Другие вопросы по тегам