DRF - Невозможно войти в систему с предоставленными учетными данными
Я попытался получить токен от django rest framework.
bigissue@vmi995554:/opt/ftusbrdp/sbin$ http POST http://172.18.0.1:7000/api-token-auth/ username='nicola' password="Password12345"
HTTP/1.1 400 Bad Request
Allow: POST, OPTIONS
Content-Length: 68
Content-Type: application/json
Cross-Origin-Opener-Policy: same-origin
Date: Tue, 29 Nov 2022 14:19:40 GMT
Referrer-Policy: same-origin
Server: WSGIServer/0.2 CPython/3.9.15
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
{
"non_field_errors": [
"Unable to log in with provided credentials."
]
}
Я создал суперпользователя и обычного пользователя из веб-гуи администратора. Все пользователи активны. Чего мне не хватает? Ниже приведена моя конфигурация. Я импортировал модуль app как rest_framework и rest_framework.authtoken, я установил переменную REST_FRAMEWORK для использования токена. Затем я вызываю методы views.obtain_auth_token для получения строкового токена.
Файл settings.py.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'appjud',
'rest_framework',
'rest_framework.authtoken'
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES':(
'rest_framework.permissions.IsAuthenticated',
),
}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbjud',
'USER': 'root',
'PASSWORD': 'Password19',
'HOST':'localhost',
'PORT':'3306',
}
}
Файл router.py
from appjud.viewsets import userviewsets
from rest_framework import routers
router = routers.DefaultRouter()
router.register('user', userviewsets, basename ='user_api')
Файл serialiers.py
class userSerializers(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
Файл viewsets.py
from rest_framework import viewsets
from .serializers import userSerializers
from django.contrib.auth.models import User
class userviewsets(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = userSerializers
Файл urls.py
from django.contrib import admin
from django.urls import path, include, re_path
from unimiproject.router import router
from rest_framework.authtoken import views
urlpatterns = [
path('admin/', admin.site.urls),
path('api-auth/', include('rest_framework.urls')),
re_path(r"^appjud/",include("appjud.urls")),
path('api/', include(router.urls)),
path('api-token-auth/', views.obtain_auth_token, name='api-token-auth'),
]