Как войти перенаправления в пирамиде?

Я пытаюсь настроить его так, чтобы приложение Pyramid регистрировало сообщение всякий раз, когда оно выполняет перенаправление - например, когда возникает одно из моих просмотров HTTPFound,

Создание собственного подкласса HTTPFound работал, но это отстой, чтобы убедиться, что класс используется везде в приложении.

Затем у меня возникла идея создания настраиваемого представления исключений с context=HTTPFound но эта точка зрения, кажется, не получила ответа.

Есть ли стандартный способ настроить специальную обработку для перенаправления, которое является глобальным для приложения?

1 ответ

Решение

Для выхода из переадресации вам понадобится анимация, которая проверяет статус возврата, например:

from wsgiref.simple_server import make_server

from pyramid.config import Configurator
from pyramid.httpexceptions import HTTPFound


def hello1(request):
    raise HTTPFound(request.route_url('hello2'))


def hello2(request):
    return {'boom': 'shaka'}


def redirect_logger(handler, registry):
    def redirect_handler(request):
        response = handler(request)
        if response.status_int == 302:
            print("OMGZ ITS NOT GOING WHERE YOU THINK")

        return response
    return redirect_handler


def main():
    config = Configurator()

    config.add_route('hello1', '/', view=hello1)
    config.add_route('hello2', '/hi', view=hello2, renderer='json')
    config.add_tween('__main__.redirect_logger')

    app = config.make_wsgi_app()
    return app

if __name__ == '__main__':
    app = main()
    server = make_server('0.0.0.0', 8080, app)
    print("http://0.0.0.0:8080")
    server.serve_forever()
Другие вопросы по тегам