从另一个文件引用在函数中定义的python全局变量->

时间:2019-04-25 14:33:31

标签: django python-3.x django-rest-framework

我正在使用django社交身份验证管道在社交身份验证过程中引入自定义功能。 我能够解析此函数内的请求参数(例如:facebook用户令牌)。解析的令牌将用作位于另一个文件中的另一个函数的输入,这可以解决问题:我不能在另一个函数中使用它

我需要从另一个文件中的另一个函数引用全局令牌变量。当我合并file1.py和file2.py时,它可以工作,但是当我想在file2.py的doSomething()函数中使用来自file1.py的createUser(...)的已解析标记时,解释器抛出错误,提示该函数createUser带有参数,我必须定义它们,但是如何?

# settings.py:

SOCIAL_AUTH_PIPELINE = [
    ...
    'MyApp.file1.createUser',
    ...
]

# file1.py :

from MyApp.models import FacebookUser
import file2

def createUser(backend, user, request, response, *args, **kwargs):
    if backend.name == 'facebook':

        global token
        token = request['token']

    if request['user_type'] == "facebookUser" and not FacebookUser.objects.filter(user_id=user.id):

        FacebookUser.objects.create(user_id=user.id)
        file2.doSomething()

    elif FacebookUser.objects.filter(user_id=user.id):
        file2.doSomething()


# file2.py :

from file1 import createUser

def doSomething():

    myToken = createUser().token   # <--- My problem is here. How can I access the global variable "token" from the createUser function in file1? The function createUser comes with arguments but how can I use it here?

    return myToken



0 个答案:

没有答案