Django Restframework - Как отправить ContactMe Email через SMTP gmail без использования моделей или форм, и при этом получить валидацию?

На моем сайте, который я создаю, у меня есть простая форма:

составьте мне форму с моего сайта

Я использую ReactJS для создания фронтенда, а в качестве бэкенда я использую Django Restframework.

В моем views.py я получил следующий код:

class SendEmailView(APIView):
    def post(self,request):
        subject = request.data['subject']
        message = request.data['message']
        email = request.data['emailAddress']
        if len(subject)<5:
          
            raise ValidationError('Subject must be at least 5 characters long.')
        if len(message)<10:
             raise ValidationError('Message must be at least 10 characters long.')
        try:
            send_mail(subject=subject, message=message, from_email=settings.EMAIL_HOST_USER, recipient_list=[email], fail_silently=False)
            return Response({"success":True})
        except Exception as e:
            print('Exception: ', e.message)
        
            return  Response({'Exception: ', str(e)},status=status.HTTP_400_BAD_REQUEST)

Я просто немного поэкспериментировал. Но в основном я получаю тему, сообщение и email из POST-запроса, а затем отправляю письмо, которое отлично работает. Но я не могу заставить работать то, что представление отправляет ValidationErrors как json в мое фронтенд-приложение ReactJs.

Например, если тема и / или сообщение слишком короткие... или если это не действительный email. Я хочу отправлять обратно соответствующие ошибки в виде (или что-то подобное) {'errors':[{email: "not a valid email"}, {"subject": "The subject must contain at least 5 letters. Вы указали только 3."}]}.

Дело в том, что я не использую здесь Django forms или Django Models... если бы это было так, то были бы тонны руководств и это не было бы проблемой.

Другими словами, я использую Django Restframework, поэтому я не использую валидацию форм и у меня нет модели, потому что я не хочу ничего сохранять в базе данных.

Нужно ли мне писать собственную логику валидации и т.д.?

Большое спасибо!

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