Django Simple JWT non_field_errors: [Активная учетная запись с указанными учетными данными не найдена]

С django rest framework я использовал django-rest-framework-simplejwt из здесь.

Согласно данному руководству мой settings.py REST_FRAMERWORK должен выглядеть так:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
}

Теперь, когда я вызываю api /api/token/ с помощью CURL вот так:

curl -X POST -H "Content-Type: application/json" -d '{"username": "aami", "password": "ooma"}' http://127.0.0.1:8000/api/token/

Я получаю следующую ошибку:

curl -X POST -H "Content-Type: application / json" -d '{"username": "aami", "password": "ooma"}' http://127.0.0.1:8000/api/token/

И журнал на стороне сервера:

Неверный запрос: / api / token / [12 / Apr / 2019 15:01:02] «POST / api / token / HTTP / 1.1» 400 75

Я выполнил то, что упоминалось в рекомендациях, но до сих пор не могу понять, что не так.


person sphoenix    schedule 12.04.2019    source источник
comment
Если ошибка no active account with the given credentials, похоже, вы не передаете правильные username и password, или username не существует.   -  person afonso    schedule 16.04.2019
comment
Как вы создавали своих пользователей? Можете показать фрагмент кода?   -  person Overdrivr    schedule 14.05.2019


Ответы (1)


Это происходило со мной. Я понял, что создал своих пользователей с помощью

User.objects.create(username="xxx", password="yyy")

Но в Django необходимо использовать специальный create_user метод. Я удалил пользователя и изменил его на

User.objects.create_user(username="xxx", password="yyy")

и это сработало.

person James Vance    schedule 09.08.2019
comment
В чем разница между User.objects.create и User.objects.create_user? - person sphoenix; 09.08.2019
comment
Django использует специальный метод create_user для обеспечения хеширования пароля. - person James Vance; 09.08.2019