Проверка электронной почты на 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: Пользователь не зарегистрирован" }
Консоль говорит, что запрос неверный. Как я могу исправить свою функциональность, чтобы она работала?