/ / Неправильні облікові дані з Django Rest Framework? - python, django, django-rest-framework, token, restful-authentication

Невірний обліковий запис із Django Rest Framework? - python, django, django-rest-framework, token, restful-authentication

Я намагаюся встановити аутентифікацію маркера за допомогоюDjango Rest Framework. Я зараз пишу кілька тестів, щоб побачити, чи можу я отримати токен для користувача.

def test_create_valid_request(self):
u = User.objects.create(username="test1", password="thisis8chars")
Token.objects.create(user=u)

# these assertions all pass
self.assertEqual(User.objects.get(username="test1"), u)
self.assertEqual(u.username, "test1")
self.assertEqual(u.password, "thisis8chars")

data = {"username": "test1", "password": "thisis8chars"}
url = "/api-token-auth/"

response = self.client.post(url, data, format="json")
print response.status_code
print response.content

Це друкує:

400
{"non_field_errors":["Unable to log in with provided credentials."]}

Я розумію, що має бути щось не такз моїми обліковими даними, але я не можу його бачити. Створюю користувача, перевіряю його атрибути і роблю запит на публікацію, щоб отримати маркер. Я вручну протестував це на сервері розвитку Django httpie, і він працює і повертає маркер. Будь-які ідеї, які проблеми можуть бути? Це проблема з налаштуванням тестування? Якщо так, то що?

Я можу розмістити / описати більше коду, якщо це необхідно.

Дякую

Відповіді:

0 для відповіді № 1

Отже, помилка була дуже проста: я хотів User.objects.create_user а не User.objects.create.

Пароль, який я намагався використовувати з моїмКод вище був проблематичним, тому що він не "хеширований або солоний, і тому, що Django не зберігає або відправляє звичайні текстові паролі, мені відправка звичайного текстового пароля призвела до поганої помилки облікових даних.


0 для відповіді № 2

Як ви вже говорили, вам потрібно скористатися User.objects.create_user.

Щоб додати до цього, якщо у вас вже є примірник користувача, і ви хочете змінити свій пароль, вам доведеться викликати user.set_password(raw_password) метод