Я написал RegistrationView для ДжосераИзменение QuerySet в ModelViewSet в Django Framework Rest
class RegistrationView(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserRegistrationSerializer
permission_classes = (
permissions.AllowAny,
)
def perform_create(self, serializer):
user = serializer.save()
signals.user_registered.send(sender=self.__class__, user=user, request=self.request)
if settings.get('SEND_ACTIVATION_EMAIL'):
self.send_activation_email(user)
elif settings.get('SEND_CONFIRMATION_EMAIL'):
self.send_confirmation_email(user)
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
token = create_token(serializer.data)
return Response(data=token, status=status.HTTP_201_CREATED, headers=headers)
def send_activation_email(self, user):
email_factory = utils.UserActivationEmailFactory.from_request(self.request, user=user)
email = email_factory.create()
email.send()
def send_confirmation_email(self, user):
email_factory = utils.UserConfirmationEmailFactory.from_request(self.request, user=user)
email = email_factory.create()
email.send()
Как вы можете видеть, я хочу использовать свой собственный create
функцию. Вот почему я использую ModelViewSet
Но, как вы можете видеть, я объявляю запрос в том виде, в котором будут перечислены все пользовательские объекты, и мне это не очень нравится.
Итак, мой вопрос.
Есть ли способ объявить еще один «запрос», который не отображает эту информацию?
Или мне следует написать свою функцию «создать» в другом месте и не писать там запрос? Дело в том, что я хочу вызвать функцию create в процессе регистрации.
Потому что я глуп, и я не знал, что есть метод «none()». hehe Большое спасибо !!! –