Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Словари в python

Артем Горячев Ученик (80), на голосовании 2 месяца назад
 accaunt = {'guest' : '123456'}
def registration():
log = request.form.get('login')
passw = request.form.get('password')
passw2 = request.form.get("passwordtu")
if passw == passw2:
print(log,passw)
dict[log] = int(passw)
return render_template('logend.html')
else:
return render_template('registr.html')
dict[log] = int(passw)
TypeError: 'type' object does not support item assignment
что делать?
Голосование за лучший ответ
Gerdot Lareston Мудрец (10768) 3 месяца назад
Ошибка "TypeError: 'type' object does not support item assignment" возникает потому, что вы пытаетесь присвоить значение элементу встроенного типа данных `dict`, который является классом, а не созданным вами словарем.

В вашем коде `dict` является встроенным типом данных, поэтому его нельзя использовать как переменную для хранения словаря.

Чтобы исправить это, вам нужно создать словарь и использовать его вместо `dict`. Вот исправленный код:

```python
account = {'guest': '123456'}

def registration():
log = request.form.get('login')
passw = request.form.get('password')
passw2 = request.form.get("passwordtu")
if passw == passw2:
print(log, passw)
account[log] = int(passw)
return render_template('logend.html')
else:
return render_template('registr.html')
```

Теперь `account` это ваш словарь, в который вы добавляете новую запись при регистрации нового пользователя.
3681 Просветленный (20338) 3 месяца назад
Ошибка возникает потому что ты пытаешься использовать имя встроенного типа данных dict как переменную для своего словаря.
Используй переменную accaunt: вместо того, чтобы пытаться изменить dict, используй существующую переменную accaunt для хранения данных аккаунтов.
Нет необходимости в int(passw): пароли обычно хранятся как строки, поэтому нет необходимости преобразовывать passw в целое число.

Так же кстати хранить пароли в открытом виде — очень плохая практика. Вместо этого используй хеширование, например, с помощью библиотеки bcrypt.
И перед добавлением нового пользователя в словарь accaunt, проверь, не существует ли уже пользователя с таким логином.
Похожие вопросы