Create_access_token() принимает 0 позиционных аргументов, но был задан 1Python

Программы на Python
Ответить
Anonymous
 Create_access_token() принимает 0 позиционных аргументов, но был задан 1

Сообщение Anonymous »

Пожалуйста, помогите мне понять причину.
Мой код такой, и я получаю эту ошибку из заголовка.

Код: Выделить всё

def create_access_token(**data: dict) -> str:
to_encode = data.copy()
expire = datetime.utcnow() + timedelta(minutes=50)
to_encode.update({"exp": expire})
AbstractJWKBase.from_dict(to_encode)
encoded_jwt = jwt.JWT().encode(
AbstractJWKBase, settings.SECRET_KEY, alg=settings.ALGORITHM
)
return encoded_jwt
когда я вызываю исходный код, он выполняется по коду, поэтому

Код: Выделить всё

@router.post("/login")
async def login_user(response: Response, email: EmailStr, password: str):
user = await authenticate(email=email, password=password)
if not user:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED)
access_token = create_access_token({"sub": user.id})
Если я удалю ** из **data, я получу еще одну ошибку:

Ошибка: полезная нагрузка должна быть dict в
AbstractJWKBase.from_dict(to_encode)

Я добавил печать в функцию create_access_token, поэтому.

Код: Выделить всё

def create_access_token(data: dict) -> str:
to_encode = data.copy()
print("1", data, type(data))
expire = datetime.utcnow() + timedelta(minutes=50)
to_encode.update({"exp": expire})
print("2",to_encode, type(to_encode))
AbstractJWKBase.from_dict(to_encode)
И я получил

Код: Выделить всё

1 {'sub': 13} 
2 {'sub': {'sub': 13}, 'exp': datetime.datetime(2026, 1, 18, 18, 51, 49, 144881)} 
Но Python 3.9 говорит, что «полезная нагрузка должна быть словарем»

Подробнее здесь: https://stackoverflow.com/questions/798 ... -was-given
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»