Проблемы с таблицей auth_user в django

Я хочу обновить некоторые поля таблицы auth_user в django. На самом деле я переношу некоторых пользователей с одного веб-сайта на другой, поэтому я хочу обновить поле пароля в таблице auth_user. Но когда я использую запрос на обновление, это дает мне некоторые ошибки.

некоторые вещи, которые я пробовал

values=User.objects.get(username=request.POST['username'])
        values.password=request.POST['password']
        values.password.save()

выдает ошибку объект 'unicode' не имеет атрибута 'сохранить

а если бы я попробовал этот

values=User.objects.get(username=request.POST['username']).update(password=request.POST['password'])

тогда ошибка объект "Пользователь" не имеет атрибута "обновление"

на самом деле я не хочу отправлять электронные письма пользователям, чтобы обновить их пароль и перенаправить их на страницу забытого пароля. Но всякий раз, когда пользователь пытается войти на сайт, и если его пароль не совпадает, но он ввел пароль правильно, но из-за миграции его пароль не работает в django, тогда введенный им пароль должен быть обновлен в таблице auth_user (зашифрованный пароль).

Между ними я должен убедиться, что этот пользователь является аутентифицированным пользователем предыдущего сайта.

Поэтому, пожалуйста, предложите мне какой-нибудь способ, чтобы я мог обновить его пароль в таблице auth_user.


person user1746291    schedule 15.01.2013    source источник


Ответы (2)


Пароли в django хранятся в виде хэшей sha256, поэтому установка

user.password = 'new password'

это не очень хорошая идея. К счастью, в django есть методы, которые позаботятся о хэшировании вашего пароля. Второе:

values.password.save()

Здесь вы пытаетесь выполнить метод save() для объекта пароля, который является строкой, а не объектом пользователя. values.save() было бы лучше, но все равно не правильно. Что вы хотите сделать, так это:

values.set_password('new password') # Takes care of hashing
values.save()

Подробнее по теме в документации по django

person Jacek Chmielewski    schedule 15.01.2013
comment
Хорошо, скажи мне одну вещь, могу ли я использовать перенаправление URL-адресов вместо отображения msg inb forms.py - person user1746291; 15.01.2013

(от имени ОП)

Я использовал это, и проблема решена

u = User.objects.get(username__exact='john')
u.set_password('new password')
u.save()
person Community    schedule 19.03.2013