Я новичок в python и пытаюсь установить / обновить пароль для созданного пользователя.
Я пытаюсь достичь:
- Установить пароль для созданного пользователя
- Обновить пароль для созданного пользователя
Я не хочу, чтобы мое поле пароля было доступно при создании пользователя или просмотре информации об использовании.Код следующий:
serializers.py
from rest_framework import serializers
from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'id', 'username', 'email', 'first_name', 'last_name')
class PasswordSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = 'password'
, а views.py -
from urllib import request
from rest_framework import viewsets, status
from django.contrib.auth.models import User
from atest.serializers import UserSerializer,PasswordSerializer
from rest_framework import permissions
from atest.permissions import IsOwnerOrReadOnly
from rest_framework.decorators import action
from rest_framework.response import Response
class UserViewSet(viewsets.ModelViewSet):
"""
This viewset provides operations on Users table to the same user.
"""
# permission_classes = (permissions.IsAuthenticatedOrReadOnly,
# IsOwnerOrReadOnly,)
queryset = User.objects.all()
serializer_class = UserSerializer
@action(detail=True, methods=['post', 'put'])
def set_password(self, request, pk=None):
user = self.get_object()
serializer = PasswordSerializer(data=request.data)
if serializer.is_valid():
user.set_password(serializer.data['password'])
user.save()
return Response({'status': 'password set'})
else:
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
Пожалуйста, помогите мне, как добиться того, чего я хочу.