Я создаю API, используя Django. Мне нужно создать логин для пользователей. Поэтому я использовал класс Django User по умолчанию и аутентификацию для этого.
Но есть проблема. API для входа (в / users / login / endpoint) определяется в следующем формате: {"user": value, "pass": value}.
И модель User, заданная Django, имеет два важных поля: "username" и "password".
Как я уже говорил, я хочу, чтобы они были "user" вместо "username" и "pass" вместо "password". Потому что именно так будет выглядеть JSON в запросах POST во внешнем интерфейсе.
Я знаю, что могу создать RenameField, но это только изменит имя столбца в базе данных, но не изменит запрос Django. имя пользователя и пароль в теле запроса POST.
Мне нужно отправить (в запросе POST в почтальоне) JSON в / users / login / endpoint в следующем формате: {"user": value, "pass": value}.
Но модель Django User не знает, что это за поля, ей не нужен пользователь, ей нужно имя пользователя, ей не нужно проходить, ей нужен пароль, поэтому я получаю сообщение об ошибке.
IНужно как-то изменить ключи «user» и «pass» в данном JSON на «username» и «password». Или изменить имена полей в пользовательской модели. В противном случае ответ будет:
{
"username": [
"This field is required."
],
"password": [
"This field is required."
]
}
Потому что, как я уже сказал, Django получает «user» и «pass», и он не распознает эти ключи ... Ему нужны «username» и"пароль" поля.
т.е.: мне нужно как-то изменить с:
{
"user": value,
"pass": value
}
на:
{
"username": value,
"password": value
}
Или наоборот.
Я пытался не создаватьмоя собственная модель пользователя, и использовать модель, заданную Django, я думаю, что создавать ее не очень хорошая идея ...
Я думаю, что могу добавить новый файл с именем serializer.py и что-то сделать там, но яне знаю как, и я ничего не нашел в документации.
Если они полезны, это мои файлы.
urls.py:
from rest_framework.authtoken.views import obtain_auth_token
from django.contrib import admin
from catanAPI.catan import views
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
path('users/login/', obtain_auth_token)
]
settings.py
INSTALLED_APPS = [
#...
'django.contrib.auth',
'rest_framework',
'rest_framework.authtoken'
#...
]
AUTH_USER_MODEL = 'auth.User'
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
]
}
Я знаю, что этот вопрос можетбыть глупым или что-то в этом роде, но я новичок в Джанго и пытаюсь учиться.