我使用的是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
不能在同一代码块中同时使用两个返回。您的第二个返回语句将不会执行。
我认为你的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
send_email
函数没有被调用,因为您在return self.create(request)
之后调用它。因此无法访问send_email
的代码。
请在post
函数中仅使用一条return
语句。
您可以在没有return
语句的情况下调用电子邮件方法,然后调用return self.create(request)
send_email(request)
return self.create(request)