Я использую DRF для создания простого приложения регистрации / входа, и у меня возникают проблемы с запросом пароля при создании нового пользователя.
Я скрывался в SO и документации, но не былмогу понять это.
serializers.py
from django.contrib.auth.models import User
from rest_framework.serializers import HyperlinkedModelSerializer
class UserSerializer(HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email',
'groups', 'first_name', 'last_name',
'date_joined', 'last_login'
)
write_only_fields = ('password',)
views.py
from django.contrib.auth.models import User, Group
from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet
from rest_framework.generics import CreateAPIView
from .serializers import UserSerializer
class UserReadOnlyViewSet(ReadOnlyModelViewSet):
"""
API endpoint that allows users to be viewed.
"""
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
class UserCreateView(CreateAPIView):
"""
API endpoint that allows users to be created.
"""
serializer_class = UserSerializer
urls.py
from django.urls import path, include
from rest_framework import routers
from .views import UserReadOnlyViewSet, UserCreateView
router = routers.DefaultRouter()
router.register(r'users', UserReadOnlyViewSet)
urlpatterns = [
path('', include(router.urls)),
path('signup/', UserCreateView.as_view()),
]
Явозможность перечисления пользователей в конечной точке users/
|users/<pk>/
, и я могу создать пользователя, отправив сообщение на signup/
со следующими данными JSON:
{
"username": "new_user",
"password": "12345678",
"email": "fulano@dominio.com"
}
Я также могу создать пользователя, отправив только username
втело запроса, и мне нужен пароль, как и имя пользователя.
Итак, в итоге, у меня проблемы:
- Пароль нетребуется при публикации на
signup/
- При отправке пароль не сохраняется, ни хэшируется, ни в виде простого текста.
Спасибо.