Nm, address = addr ValueError: недостаточно значений для распаковки (ожидалось 2, получено 1), Django Rest Framework
Я работаю над личным проектом, который представляет собой электронную коммерцию, созданную с помощью Django Rest Framework и Vue.js. Я создал контактную форму, но когда я пытаюсь отправить ее, возникает ошибка:
/venv/lib/python3.9/site-packages/django/core/mail/message.py", строка 96, in sanitize_address nm, address = addr ValueError: недостаточно значений для распаковки (ожидалось 2, получилось 1)
Кажется, что ему нужно какое-то дополнительное значение, которое он не получает из моего views.py.
.Это мой сериализатор:
from rest_framework import serializers from . models import Contact class ContactForm(serializers.ModelSerializer): class Meta: model = Contact fields = ( 'first_name', 'last_name', 'phone', 'email', 'subject', 'message', )
Это мой Views.py:
from rest_framework import status from rest_framework. response import Response from rest_framework.decorators import api_view from django.core.mail import send_mail from django.template. loader import render_to_string from .models import Contact from .serializers import ContactForm @api_view(['POST']) def contact_form_post(request): if request.method == "POST": serializer = ContactForm(data=request.data) if serializer.is_valid(): first_name = serializer.validated_data['first_name'], last_name = serializer.validated_data['last_name'], phone = serializer. validated_data['phone'], email = serializer.validated_data['email'], subject = serializer.validated_data['subject'], message = serializer. validated_data['message'] print(first_name, last_name, phone, email, subject, message) context = { 'first_name': first_name, 'last_name': last_name, 'phone': phone, 'email': email, 'subject': subject, 'message': message } send_mail( subject, render_to_string('emails/contact. txt', context), email, ['emailThatItryToUse@gmail.com'], fail_silently=False, auth_user=None, auth_password=None, connection=None, html_message=None ) serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Я проверил через консоль, определяется ли информация формы, и это так. Все это я получаю через v-model="".
А это моя конфигурация settings.py для электронной почты:
EMAIL_HOST = 'smtp. gmail.com' EMAIL_PORT = 587 EMAIL_HOST_USER = 'emailThatiTryToUse@gmail.com' EMAIL_HOST_PASSWORD = 'accessPasswordforThatEmail' EMAIL_USE_TLS = True
А это JavaScript для отправки данных в бэкенд:
const data = { 'first_name': this.first_name, 'last_name': this.last_name, 'phone': this. phone, 'email': this.email, 'subject': this.subject, 'message': this.message, } axios .post('/api/v1/contacto/', data) .then(response => { this.$router.push('/') return response }) .catch(error => { this.errors.push('Algo funciona mal') console.log(error) })
Я очень надеюсь, что вы сможете помочь мне с этим. Спасибо!
if serializer.is_valid():
first_name = serializer.validated_data['first_name'],
last_name = serializer.validated_data['last_name'],
phone = serializer.validated_data['phone'],
email = serializer.validated_data['email'],
subject = serializer.validated_data['subject'],
Я полагаю, что проблема вызвана запятыми в конце этих строк, что превращает присвоенные значения в кортежи. Зачем вы это делаете?