Задать вопрос
@dvrr
Новичок, еще только учусь

Как исправить TypeError: string indices must be integers, not 'str'?

Всем привет. Вроде бы все правильно сделал, но выдает ошибку. Какое решение? Смотрел в интернете, но это не подходит.
@app.route('/check_account', methods=['GET', 'POST'])
def check_account():

  accounts = users.find_one({})
  for account in accounts:
    if account['name'] == 'test' and account['password'] == '123':
      return f'Success! {name} : {password}'

    else:
      return 'error!'


File "C:\Users\user\Desktop\**\main.py", line 29, in check_account
    if account['name'] == 'test' and account['password'] == '123':
       ~~~~~~~^^^^^^^^
TypeError: string indices must be integers, not 'str'
  • Вопрос задан
  • 180 просмотров
Подписаться 1 Простой 8 комментариев
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
1. Прочитать ошибку
Индексы строки должны быть числами. Ошибка указывает на account['name'].

2. Осознать ошибку
Ты ожидаешь, что в account лежит словарь или что-то похожее, а там строка!

3. Проследить ошибку
account приходит из for account in accounts. Значит, accounts либо является коллекцией строк, либо является словарём с ключами строками. Надо проверить, что приходит в accounts, либо с помощью пошагового прохода программы, либо с помощью отладочного print().

4. Исправить ошибку
Ну это ты уж самостоятельно. Я не знаю, что именно ты ожидаешь от users.find_one().
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
02 февр. 2025, в 12:33
3000 руб./за проект
02 февр. 2025, в 12:27
5000 руб./за проект
02 февр. 2025, в 11:35
3000 руб./за проект