Ссылочная глобальная переменная python, определенная в функции -> из другого файла - PullRequest
0 голосов
/ 25 апреля 2019

Я использую конвейер социальной аутентификации django, чтобы ввести пользовательскую функцию в процессе социальной аутентификации. Я могу проанализировать параметры запроса (например, токен пользователя Facebook) внутри этой функции. Проанализированный токен будет служить входом для другой функции, расположенной в другом файле, и здесь возникает проблема: я не могу использовать его в другой функции

Мне нужно сослаться на глобальную переменную токена из другой функции в другом файле. Когда я объединяю file1.py и file2.py, он работает, но когда я хочу использовать проанализированный токен из createUser (...) file1.py в функции doSomething () file2.py, интерпретатор выдает ошибку, которая говорит: эта функция 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



...