Django: перенаправить на предыдущую страницу * со строкой запроса * после входа в систему

Я использую django.contrib.auth и хочу перенаправить на предыдущую страницу после входа в систему. Я хотел бы что-то вроде следующего: Django: перенаправление на предыдущую страницу после входа в систему за исключением, что URL-адрес перенаправления может содержать строку запроса.

В настоящее время в моем шаблоне есть следующая ссылка:

<a href="{% url user_login %}?next={{ request.get_full_path }}">Login</a>

user_login - это имя моего представления для входа в систему.

Я хотел бы использовать _4 _ вместо {{ request.path }}, чтобы получить текущий путь, включая строку запроса, но это приведет к созданию URL-адреса со строкой запроса в строке запроса (например, /login/?next=/my/original/path/?with=other&fun=query&string=parameters), которая не работает.

Я также попытался добавить аргумент redirect_to в свое представление входа в систему и передать URL-адрес со строкой запроса в качестве элемента тегу шаблона url. Однако это дает мне ошибку NoReverseMatch.


person saltycrane    schedule 29.06.2011    source источник


Ответы (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 :)

person Yuji 'Tomita' Tomita    schedule 29.06.2011