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:)