Вы можете изменить ссылки «Логин», чтобы они всегда включали текущий URL в качестве значения переменной _next
в строке запроса. Например, где бы вы ни создавали ссылку для входа, определите ее следующим образом:
A('Login', _href=URL('default', 'user', args='login',
vars=dict(_next=URL(args=request.args, vars=request.vars))))
Это добавит URL текущей страницы (включая любые аргументы и переменные) к переменной _next
в строке запроса ссылки для входа в систему, что приведет к перенаправлению на текущую страницу после входа в систему.
Если вы используете помощник auth.navbar()
для создания своей ссылки для входа, уже есть изменение в транке, которое решает эту проблему (будет выпущено очень скоро). Новый auth.navbar()
автоматически добавит переменную _next
ко всем ссылкам, поэтому после нажатия любой ссылки на панели навигации пользователь перенаправляется обратно на исходную страницу. Тем временем вы можете отредактировать auth.navbar()
следующим образом:
import urllib
navbar = auth.navbar()
if not auth.is_logged_in and request.args(0) != 'login':
navbar[1]['_href'] += '?_next=' +\
urllib.quote(URL(args=request.args, vars=request.vars))