我正在使用Django rest框架,我有一个与我们联系的表..在视图中,我使用基于类的视图,我想在用户发布数据时发送电子邮件..这是我的功能
def post(self, request):
return self.create(request)
return send_email(request)
def send_email(request):
if request.method == 'POST':
subject = request.POST.get('subject', '')
message = request.POST.get('message', '')
from_email = request.POST.get('email', '')
send_mail(subject, message, from_email, ['haguwanax@l0real.net'], fail_silently=False)
return Response (status=status.HTTP_200_OK)
它保存数据,但没有发送任何内容。 这是我的设置。py
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_PORT = 587
EMAIL_HOST_USER = '*****@gmail.com'
EMAIL_HOST_PASSWORD = '*******'
EMAIL_USE_TLS = True
答案 0 :(得分:0)
未调用send_email
函数,因为您是在return self.create(request)
之后调用它。因此,您无法访问send_email
的代码。
请在return
函数中仅使用一个post
语句。
您可以在不使用return
语句的情况下调用电子邮件方法,然后再调用return self.create(request)
send_email(request)
return self.create(request)
答案 1 :(得分:0)
在同一代码块中不能一次使用两个return。您的第二个return语句将不会执行。
我认为您的create方法不需要返回任何东西。它只是存储一些值。 如果电子邮件发送成功与否,您的发送电子邮件可能会返回true或false 请在您的post函数中仅使用一个return语句。
您可以重写以下代码:
def post(self, request):
self.create(request)
check_mail=send_email(request)
if check_mail:
return Response (status=status.HTTP_200_OK)
def send_email(request):
if request.method == 'POST':
subject = request.POST.get('subject', '')
message = request.POST.get('message', '')
from_email = request.POST.get('email', '')
send_mail(subject, message, from_email, ['haguwanax@l0real.net'],
fail_silently=False)
return True