【问题标题】:How to set a redirection url in a template?如何在模板中设置重定向 url?
【发布时间】:2011-12-07 18:37:05
【问题描述】:

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

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

{% url socialauth_begin 'twitter' %}

使用我的 settings.py 文件中 LOGIN_REDIRECT_URL 的值,这工作得相对较好(虽然,请参阅我的问题:Twitter takes users to /en/logged-in/ regardless of my settings)但是,在这种特殊情况下,我需要将用户重定向到一个特殊的 url返回时。

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

抱歉这个基本问题。

【问题讨论】:

    标签: django django-socialauth


    【解决方案1】:

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

    在您看来: ... 从 django.utils.http 导入 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>
    ...
    

    【讨论】:

      【解决方案2】:

      我正在使用此代码:

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

      这行代码可以重定向到同一个页面,你甚至可以将它设置到你的标题中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-03
        • 2013-08-22
        • 2021-01-09
        • 2020-08-11
        • 2018-08-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多