Проблема в том, как вы создаете свой объект User.
Django не хранит ваш пароль в виде обычного текста в базе данных, он хранит его хэш-значение. Но в вашем коде пароль задан в виде обычного текста.
Таким образом, когда вы используете c.login(...)
внутри, Django вызовет метод check_password
, который сгенерирует хеш-значение из пароля, который вы передали, и сравнит его с паролем, сохраненным в базе данных, и в результате вернет False
потому что 'gaul' из DB не равен get_hexdigest ('gaul')
Есть два варианта:
1) Используйте метод User.objects.create_user
, который позаботится о хешировании пароля:
def setUp(self):
self.user = User.objects.create_user(username='tauri',
password='gaul',
email='')
2) Или установите пароль с помощью метода set_password
:
def setUp(self):
self.user = user = User.objects.create(username='tauri')
user.set_password('gaul')
user.save()