开发者

Django: Redirect to previous page *with query string* after login

I am using django.contrib.auth and would like to redirect to the previous page after logging in. I would like something like the following: Django: Redirect to previous page after login except the redirected-to URL can contain a query string.

Currently I have the following link in my template:

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

user_login is the name of my login view.

I would like to use {{ request.get_full_path }} instead of {{ request.path }} to get the current path including the query string, but this would create a url with a query string within a query string (e.g. /login/?next=/my/original/path/?with=other&fun=query&string=parameters) which doesn't work.

I also tried adding a redirect_to argument to my login view and passing t开发者_JAVA百科he url with the query string as a arument to the url template tag. However this gives me a NoReverseMatch error.


How about escaping the get parameters and then unquoting them in the view?

html

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

login view

if successful_login:
    url_with_get = urllib2.unquote(request.GET.get('next'))
    return http.HttpResponseRedirect(url_with_get)

PS: I've stumbled across your blog many times looking for PIP help : )

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜