Проверка электронной почты на Django без API

Я пытаюсь реализовать проверку электронной почты с помощью Django без API.

Я включил следующие элементы в свой файл settings.py:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'stmp@gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'my_email@gmail.com'
EMAIL_HOST_PASSWORD = 'my_password'
DEFAULT_FROM_EMAIL = 'default from password'

Ниже представлен мой файл views.py. Я посылаю письмо пользователю, который здесь регистрируется.

from rest_framework.views import APIView
from rest_framework.response import Response
from .serializers import UserSerializer
from django.contrib.auth.models import User
from django.contrib.auth import authenticate
from rest_framework.permissions import AllowAny
from django.core.mail import send_mail


class TestView(APIView):
    def get(self, request, format=None):
        print("API called")
        return Response("You did it!", status=200)


class RegisterView(APIView):
    permission_classes = [AllowAny]

    def post(self, request, format=None):
        print("Registering User")

        user_data = request.data
        print(request.data)

        user_serializer = UserSerializer(data=user_data)

        if user_serializer.is_valid(raise_exception=False):
            user_serializer.save()

            send_mail(
                'Verify Your All-in-one Account',
                'Hi!',
                'allinonehealthapp22@gmail.com',
                user_data['email'],
                fail_silently=False,
            )

            return Response({'User': user_serializer.data}, status=200)

        return Response({'msg': "error: User not registered"}, status=400)


class UserLoginView(APIView):

    permission_classes = [AllowAny]

    # convert user token to user data

    def get(self, request, format=None):

        if request.user.is_authenticated == False or request.user.is_active == False:
            return Response('Invalid credentials', status=403)

        user = UserSerializer(request.user)
        print(user.data)

        return Response("Testing", status=200)

    def post(self, request, format=None):
        print("Login class")

        # Looking for user's email or username
        user_obj = User.objects.filter(email=request.data['username']).first(
        ) or User.objects.filter(username=request.data['username']).first()

        # if user is valid, returns user data in credentials
        if user_obj is not None:
            credentials = {
                'username': user_obj.username,
                'password': request.data['password']
            }
            user = authenticate(**credentials)

        # if user is valid and active, logs user in
            if user and user.is_active:
                user_serializer = UserSerializer(user)
                print("Login successful")
                return Response(user_serializer.data, status=200)

        return Response("Invalid credentials", status=403)

В RegisterView() есть функция send_email. Письмо не отправляется. Я также не могу понять, как использовать переменные в моем файле settings.py.

Вот что я получаю на Postman: { "msg": "error: Пользователь не зарегистрирован" }

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

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