пирамида: получить абсолютный URL-адрес приложения

Есть ли способ получить абсолютный URL-адрес приложения пирамиды в функции main ()? Я хочу добавить его в глобальные настройки, чтобы его можно было вызывать везде (в шаблонах и файлах js). В документах-пирамидах есть некоторые функции, которые могут помочь, но всем им нужен объект запроса и они должны вызывать представление. Спасибо.


person Mehdi Seifi    schedule 14.06.2011    source источник


Ответы (2)


Pyramid (как и большинство WSGI-приложений) можно монтировать на любой домен и префикс URL. Таким образом, само приложение на самом деле не знает, за какие URL-адреса оно отвечает, если только вы не запрограммируете это специально в своем приложении (например, в настройках INI).

Вот почему существует request.application_url... потому что application_url может быть разным для каждого запроса в зависимости от того, сколько разных доменов и префиксов URL у вас есть, которые проксируют запросы к вашему приложению.

person Michael Merickel    schedule 15.06.2011

Я просто получаю полный маршрут для своего индексного маршрута, в моем случае «домой»:

Я установил это в моем основном шаблоне mako оболочки, чтобы все мои вызовы JS могли ссылаться на него, чтобы построить правильный путь для вызовов ajax и т. д.

    <script type="text/javascript" charset="utf-8">
        <%
            app_url = request.route_url('home').rstrip('/')
        %>
        APP_URL = '${app_url}';
    </script>
person Rick    schedule 14.06.2011
comment
Обратите внимание, что request.application_url также доступен. Я думаю, что дело здесь в том, что объект запроса доступен в ваших шаблонах, а не только в ваших представлениях. - person Michael Merickel; 15.06.2011
comment
Да, request.application_url существует в каждом запросе, но я ищу способ без необходимости объекта запроса или с поддельным запросом в функции main() в init.py. - person Mehdi Seifi; 15.06.2011