Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django重定向/调用来自另一个函数的参数_Python_Django_Python Social Auth - Fatal编程技术网

Python Django重定向/调用来自另一个函数的参数

Python Django重定向/调用来自另一个函数的参数,python,django,python-social-auth,Python,Django,Python Social Auth,我正在使用自定义python social auth pipline构建应用程序,以便通过facebook登录。 情况很简单,我需要使用参数将用户从非视图函数重定向到url 以下是我的相关URL: url(r'^.*', login, name = 'login'), url(r'^logout/.*', logout, name = 'FBAuth.views.logout'), url(r'^/new_user/.*', login, {'new_user':1}, name = 'new_

我正在使用自定义python social auth pipline构建应用程序,以便通过facebook登录。 情况很简单,我需要使用参数将用户从非视图函数重定向到url

以下是我的相关URL:

url(r'^.*', login, name = 'login'),
url(r'^logout/.*', logout, name = 'FBAuth.views.logout'),
url(r'^/new_user/.*', login, {'new_user':1}, name = 'new_user' ),
url(r'^succeeded/.*', login, {'new_user':2}, name = 'succeeded' ),
从views.py:

def login(request, new_user=None):
    logger.debug("I'm in login view, new_user = %s", new_user)
    message = 'Welcome to application!'
    if new_user:
        if new_user == 1: #new one
            message = 'Wellcome to our app! Thanks for registration'
        else: 
            if new_user == 2: #loggined
                message = "Successfully logged in"
            else:
                message = new_user
    context = RequestContext(request, {
         'request': request, 'user': request.user, 'message' : message})
    return render_to_response('login.html', context_instance=context)
custom.py:

def check_if_exists(strategy,  request, *args, **kwargs):
    login_type = strategy.request.GET.get('login_type')

    if kwargs['is_new']:
        ...
        some code
        ...
    else:
        #if login_type == 2: 
            #raise AuthAlreadyAssociated          #need to add message
            new_user = 1
            #return redirect('/new_user/')
            #return redirect('/new_user/', {'new_user' : new_user} )
            return login(new_user=1)
            #return redirect(reverse('new_user'))
            #reverse('FBAuth.views.login', kwargs={'new_user' : new_user} ) #, new_user=new_user) #, args =(new_user,))
            #reverse(redirect_uri, args=(backend,))
    return None
以下是我的身份验证管道:

SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    'social.pipeline.social_auth.social_user',
    'FBAuth.facebook.check_if_exists',     
    'social.pipeline.user.get_username',
    'social.pipeline.user.create_user',
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details',
)
通过url显示的pipelene cals:

 href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}&login_type={{1}}"
我尝试了一百万种变体,但都没用。重定向总是失败,或者我在视图中得到new_user=None

请帮助我找到传递参数的方法

注意:我也试过:

return redirect('/new_user/1/')

对于url:

url(r'^/new_user/(?P<new_user>)/$', login, name = 'new_user' ),
url(r'^/new_user/(?P)/$),登录名='new_user'),

页面已打开,但没有消息(新用户无)

我认为问题在于您处理URL的方式

url(r'^/new_user/(?P<new_user>)/$', login, name = 'new_user' )

这没有经过测试。希望这能有所帮助。

我认为问题在于您处理URL的方式

url(r'^/new_user/(?P<new_user>)/$', login, name = 'new_user' )

这没有经过测试。希望这能有所帮助。

什么叫
检查\u是否存在
函数?这是python social auth的一部分,它从下一个函数调用,我将把它添加到描述中。使用当前代码(即使用
返回登录名(new\u user=1)
),会发生什么?那么到底应该发生什么呢?这种变体根本不起作用。这一个可以工作
return redirect(reverse('new\u user'))
但是我的视图没有任何参数,
new\u user
None
什么调用它
检查\u是否存在
函数?这是python social auth的auth管道的一部分,它从下一个函数调用,我将它添加到描述中。使用当前代码(即使用
返回登录(new\u user=1)
),会发生什么?确切地说应该发生什么?这个变体根本不起作用。这个变体可以
返回重定向(反向(“new\u user”))
但是我的视图没有任何参数,
new\u user
None
我需要在我的视图中以其他方式解析这个吗?不需要更改视图。你的视图应该将new\u user变量设置为1。我想这是你想要的,根据你的代码。但是我的
new\u user
仍然是
None
你能粘贴u吗rl并检查这里是否存在代码。我是否需要在我的视图中以其他方式解析此代码?不需要更改视图。您的视图应将新用户变量设置为1。我认为这是您想要的,根据您的代码。但是我的
新用户
仍然是
您可以粘贴url并检查这里是否存在代码吗。
return redirect('/new_user/1/')