Пирамида: Как получить маршруты всех приложений в представлении?
Я хочу увидеть все маршруты, которые есть в моем приложении. Возвратите их как ответ как пара ключей => значения:
'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-интерфейсом) так, как это делает панель отладки пирамиды в своей панели маршрутов.
Установите pshell, затем pshell, чтобы войти в pshell с конфигурацией вашего приложения. затем беги
print("\n".join([r.path for r in app.routes_mapper.routelist]))