Django: перенаправление на предыдущую страницу * с строкой запроса * после входа в систему
Я использую django.contrib.auth
и хотел бы перенаправить на предыдущую страницу после входа в систему. Мне бы хотелось что-то вроде следующего: Django: Перенаправить на предыдущую страницу после входа в систему кроме перенаправленного URL может содержать строку запроса.
В настоящее время у меня есть следующая ссылка в моем шаблоне:
<a href="{% url user_login %}?next={{ request.get_full_path }}">Login</a>
user_login
- это имя моего входа в систему.
Я хотел бы использовать {{ request.get_full_path }}
вместо {{ request.path }}
, чтобы получить текущий путь, включая строку запроса, но это создаст url с строкой запроса в строке запроса (например, /login/?next=/my/original/path/?with=other&fun=query&string=parameters
), которая не работает.
Я также попытался добавить аргумент redirect_to
в мое окно входа и передать URL-адрес с строкой запроса в качестве атрибута тега шаблона url
. Однако это дает мне ошибку NoReverseMatch
.
Ответы
Ответ 1
Как насчет того, чтобы экранировать параметры get, а затем игнорировать их в представлении?
HTML
<a href="{% url user_login %}?next={{ request.get_full_path|urlencode }}">Login</a>
вид входа
if successful_login:
url_with_get = urllib2.unquote(request.GET.get('next'))
return http.HttpResponseRedirect(url_with_get)
PS: Я наткнулся на ваш блог много раз, пытаясь найти помощь PIP:)