Как только пользователь регистрируется в первый раз в своем приложении, он должен сделать некоторые выборы. Я делаю это, перенаправляя его на страницу конфигурации. Эти выборы имеют решающее значение для существования всей веб-страницы, поэтому приложение не должно ничего делать, прежде чем отправлять их. Я хочу сделать запрос слушателем, который будет проверять, установлены ли у пользователя эти параметры, а если нет, он перенаправит его на нужную страницу. Я сделал это с помощью:Переадресация пирамиды в обработчике событий
@subscriber(NewRequest)
def has_preferences_set(event):
request = event.request
user = request.user
if not user.preferences:
raise HTTPFound(location=request.route_url('set_my_preferences'))
Однако у меня есть некоторые проблемы в нем. Во-первых, это событие на самом деле называется 6 раз по одному запросу (более того, ни один из них не предназначен для фактического запроса, 2 для статических файлов, 4 для pyramid_toolbar). Во-вторых, после того, как перенаправлять я получаю эту ошибку:
Firefox has detected that the server is redirecting the request for this address in a way that will never complete