Как войти перенаправления в пирамиде?
Я пытаюсь настроить его так, чтобы приложение 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()