如何在模板中设置重定向URL?

时间:2011-12-07 18:37:06

标签: django django-socialauth

我在Python 2.7.1下使用django-social-auth和Django 1.3.1。我一直在寻找各地,我无法弄清楚如何使用自定义重定向网址进行Twitter身份验证(或其他提供商)。

我已经读过我需要在我的html模板中使用此模板标记来构建启动该过程的链接:

{% url socialauth_begin 'twitter' %}

使用我的settings.py文件中LOGIN_REDIRECT_URL的值可以正常工作(虽然,请参阅我的问题:Twitter takes users to /en/logged-in/ regardless of my settings)但是,在这种特殊情况下,我需要重定向用户返回后的特殊网址。

我已经在其他地方读过我需要传递变量' next'使用我的重定向值到模板或作为twitter auth url上的参数。这是怎么做到的?我的模板作为HttpResponse加载,因此,虽然我当然可以传递模板值,但我不清楚如何在上面的模板标签中使用它们。

对不起这个基本问题。

2 个答案:

答案 0 :(得分:7)

好吧,我知道这很简单,即使问这个也觉得有点傻。我想我认为django-social-auth有这样做的特殊规定,但显然,它是非常手册。这里是其他任何人的解决方案:

在您看来:     ...     来自django.utils.http import urlquote     ...

def my_view(request, ...):
  ...
  redirect_url = urlquote("http://your_required_redirect_url/")
  ...
  return render_to_response('your_template.html', { 'redirect_url' : redirect_url })

在' your_template.html':

...
Login with <a href="{% url socialauth_begin 'twitter' %}?next={{ redirect_url }}">Twitter</a>
...

答案 1 :(得分:0)

我正在使用此代码:

<a href="{% url socialauth_begin 'twitter' %}?next={{ request.get_full_path }}">Login with Twitter</a>

这行代码会重定向到同一页面,您甚至可以将其设置为标题。