如何将查询参数添加到django-allauth LOGIN_REDIRECT_URL?

时间:2014-06-04 07:18:02

标签: javascript python django facebook django-allauth

  1. 我的JS文件嵌入在第三方页面
  2. JS文件使用jsonp请求与我的服务器通信,该请求返回一个存储在变量x
  3. 内的值
  4. 现在我想对这个用户进行身份验证,但要正确地执行此操作(使我的应用程序逻辑正常工作)我需要存储在特定于第三方页面的JS中的x
  5. 我通过allauth使用facebook登录
  6. window.open("http://localhost:8000/accounts/facebook/login/?method=oauth2", "AskAFriend Facebook Login","menubar=0,toolbar=0;scrollbars=0;dialog=0;resizable=1,width=480px,height=320px");

    1. 上面的代码为facebook登录过程打开了一个新窗口,当完成重定向到我在django应用程序中设计的视图时,我通过在{{1}中为此视图提供URL来实现此目的在LOGIN_REDIRECT_URL

    2. 中设置
    3. 现在我需要一种方法来为此请求添加一个参数,该参数可以在登录完成后到达我的视图,我该如何实现?

    4. 我尝试将其添加到我在我的JS中使用的网址settings.py(不起作用)(忽略*)

    5. 我已经阅读了有关使用自定义适配器覆盖window.open("http://localhost:8000/accounts/facebook/login/?method=oauth2&*valueofx=' + x* ...函数的内容,但我无法弄清楚如何针对我的特定情况执行此操作

1 个答案:

答案 0 :(得分:0)

您可以将LOGIN_REDIRECT_URL更改为/redirect之类的内容,而这又将成为'中介'用于控制用户重定向到的位置的视图。

该视图可能看起来像这样(未经测试):

from django.views.generic import View
from django.http import HttpResponseRedirect

class LoginRedirectIntermediary(View):
    """
    Decides where a newly logged in user should go based on the request.
    """
    def get(self, request, *args, **kwargs):
        if request.user.is_superuser:
            url = '/admin-panel/{}/'
        else:
            url = '/user-panel/{}/'

        return HttpResponseRedirect(url.format(request.user.username))