3

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

我已经读到我需要在我的 html 模板中使用这个模板标签来构建链接以启动该过程:

{% url socialauth_begin 'twitter' %}

使用我的 settings.py 文件中的值,这相对较好LOGIN_REDIRECT_URL(尽管,请参阅我的问题:Twitter 将用户带到 /en/logged-in/ 无论我的设置如何)但是,在这种特殊情况下,我需要重定向用户在返回时访问一个特殊的 url。

我在其他地方读到过,我需要将带有重定向值的变量“next”传递给模板或作为 twitter auth url 上的参数。这是怎么做到的?我的模板是作为 HttpResponse 加载的,因此,虽然我当然可以传递模板值,但尚不清楚如何在上述模板标记中使用这些值。

对不起这个基本问题。

4

2 回答 2

7

好吧,我知道这很简单,我连问这个都觉得有点傻。我想我认为 django-social-auth 对此有特殊规定,但显然,它非常手动。这是其他任何最终到达这里的人的解决方案:

在您看来: ... from 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>
...
于 2011-12-08T10:51:30.233 回答
0

我正在使用这段代码:

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

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

于 2013-01-05T22:13:24.590 回答