Добавим библиотеку проверки.

Серилизаторы.

Вьюха.

Роут.

pip install email-validator
from rest_framework import serializers


class CheckEmailRequestSerializer(serializers.Serializer):
    email = serializers.CharField()

class CheckEmailResponseSerializer(serializers.Serializer):
    message = serializers.CharField()
    status = serializers.IntegerField()

Для того, чтобы авторизованный пользователь оставался таковым после обновления страницы нам нужно при каждом создании приложения ангуляр послать запрос на сервер и проверить авторизацию пользователя и если он авторизован получить данные сессии.

Создаем серилизатор для выходных данных запроса backend/account/serializers/init.py.

Для не авторизованного запроса со статусом 401 backend/backend/serializers/noauth.py.

Создаем представление backend/account/views/init.py.

Если пользователь авторизован на фронтенде, у него будет установлен токен в хранилище и он его нам передаст в заголовке.

Поэтому на сервере мы получим пользователя из реквеста request.user.userprofile.

from rest_framework import serializers
from account.serializers.profile import UserProfileSerializer

class InitSerializer(serializers.Serializer):
    token = serializers.CharField()
    user = UserProfileSerializer()
from rest_framework import serializers

class NoAuthSerializer(serializers.Serializer):
    detail = serializers.CharField()
    status_code = serializers.IntegerField()
    status = serializers.IntegerField()
    info = serializers.CharField()

Сгенерируем случайный пароль и отправим на емейл.

Определим бекенд для писем.

Содержимое письма.

...
from django.core.mail import send_mail
from random import randrange

class RegistrationView(APIView):
    ...
    def post(self, request, format=None):
        ...
        password = str(randrange(111,999))
        user = UserProfile()
        user.username = request.data.get('email')
        user.set_password(password)
        user.email = request.data.get('email')
        user.is_active = True
        user.save()
        send_mail(
            'Регистрация',
            'Ваш пароль %s.' % password,
            'admin@example.com',
            [request.data.get('email')],
            fail_silently=False,
        )
EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'
EMAIL_FILE_PATH = '/home/zdimon/Desktop/projects/ij/tmp/'
Потратить 2 кредита и начать обучение! У вас кредитов(а)
Задать вопрос, прокомментировать.