Django Rest Framework + Serializers + Vue.js, Функциональность сброса пароля

Я пытаюсь создать функциональность сброса пароля, но не могу найти хорошее руководство, которое объясняет, как это сделать с помощью DRF и Vue.js. Я использую сериализаторы для передачи данных, поэтому нет никаких html представлений. Каков наиболее эффективный способ создания этой функциональности сброса пароля?

Я создаю новых пользователей через /api/v1/users/.

Идея заключается в том, чтобы отправить ссылку по электронной почте, которая ведет на ResetPassword.vue (не очень понимаю, как это сделать, не могу найти хороший учебник по этому вопросу), где пользователь вводит новый пароль и после нажатия submit перенаправляется на Login.vue.

Любые идеи будут очень признательны. Спасибо!

После проб и изобретения различных вариантов, мне удалось найти тот, который работает лучше всего. В принципе, если вы используете Django Rest Framework Auth token, в вашей базе данных будет таблица, в которой будут храниться Key: (здесь токен пользователя) и Name: (здесь имя пользователя). Итак, вы создаете представление, в котором будет только форма с вводом email и кнопка отправки. Вы получаете письмо, отправляете его с помощью Axios в бэкенд, и вот представление, которым вы будете управлять:

@api_view(['POST', 'GET'])
def your_method_name_that_will_be_in_urls_py(request):
    if request.method == "POST":
        serializer = ResetPasswordEmail(data=request.data)
        if serializer.is_valid():

            //Here you get the email from Front-End
            email = serializer.validated_data['email']

            //Here you fin the user that has that email
            user = User.objects.get(email=email)

            //Here you get the token of that user
            token = Token.objects.get(user=user)

            if user:

                //Here you pass the context of things above to send them in an email
                context = {
                    'email': email,
                    'username': user,
                    'token': token
                }

                send_mail(
                    'SUBJECT',
                    render_to_string('emails/reset_password.txt', context),
                    'COMPANY NAME and No Reply',
                    [email],
                    fail_silently=False,
                    auth_user=None, auth_password=None, connection=None, html_message=None
                )
                serializer.save(token=token, slug=token)

            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

И сериализатор, подобный этому:

class ResetPasswordEmail(serializers.ModelSerializer):
    class Meta:
        model = ResetPassword
        fields = (
            'email',
        )

Кроме того, я создал модель для этого сброса пароля:

class ResetPassword(models.Model):
    email = models.CharField(max_length=200, null=True)
    token = models.CharField(max_length=255, null=True)
    slug = models.SlugField(max_length=255)

    def __str__(self):
        return self.token
    //This thing creates users personalized link, that they visit and have a enter new password view in Front-End.
    def get_absolute_url(self):
        return f'/{self.token}/'

Вернуться на верх