重定向到最后一页不在python social auth上工作

时间:2014-11-15 18:34:15

标签: python django redirect python-social-auth

我正在使用python social auth来使用社交登录,但在成功登录后我无法重定向到最后一页。

例如,如果我在以下页面http://localhost:8000/docprofile/14/并单击登录按钮,而不是将我重定向到最后一页http://localhost:8000/docprofile/14/,则会将我重定向到登录页面。

如果我这样说:

<a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}"> | Login with Facebook</a>

重定向到登录页面,网址以奇怪的字符结尾:

http://localhost:8000/login/#_=_

我也试过这个:

<a href="{% url 'social:begin' 'facebook' %}?next={{ request.get_full_path }}"> | Login with Facebook</a>

这一次它确实采用了/docprofile/14的路径,但仍然没有将我重新定向,并带我进入带有网址http://localhost:8000/login/?next=/docprofile/14/#_=_的登录页面

3 个答案:

答案 0 :(得分:1)

我要做的是从我的GET中的查询字符串中删除下一个参数,并修改html以将其包含在模板中,如下所示

def home(request):
    c = context()
    if request.GET.get('next'):
        c = context(next=request.GET['next'])

    return render_to_response('home.html',
                              context_instance=RequestContext(request, c))

def context(**extra):
    return dict({
        'available_backends': load_backends(settings.AUTHENTICATION_BACKENDS)
    }, **extra)

我的模板现在从上下文中获取下一个参数,当我登录重定向时工作。

<a class="col-md-2 btn btn-default" name="{{ backend|backend_class }}" href="{% url "social:begin" backend=name %}?next={{next}}">

答案 1 :(得分:0)

您可以将其包含在重定向页面模板的头部 -

<script type="text/javascript">
   if (window.location.hash == '#_=_') {
      window.location.hash = '';
   }
</script>`

它会起作用!

答案 2 :(得分:0)

解决方案:

<a class="fb-login-placeholder" href="{% url 'social:begin' 'facebook' %}?next={{ request.GET.next }}">| Login with Facebook</a>

即需要request.path来代替request.GET.next
确实,要摆脱这些有趣的角色,请使用@AshishGupta的答案。