Django 项目 - 发送电子邮件。有一个视图函数接收 POST 请求,循环遍历数据库中的所有电子邮件并将请求参数传递给 Celery 任务。 Celery 任务是通过标准的 Django 函数发送电子邮件,但没有发送电子邮件。
在终端中显示一个铭文:类型的对象不是 JSON 可序列化的。
我不明白如何解决这个问题以便一切正常?
view.py:
from django.shortcuts import render, redirect
from django.core.mail import send_mail
from .forms import *
from .models import *
from . import tasks
from djsender.settings import API_KEY
import requests
def send_some_email(request):
if request.method == 'POST':
form = EmailForm(request.POST)
if form.is_valid():
from_mail = form.cleaned_data['from_mail']
subject = form.cleaned_data['subject']
message = form.cleaned_data['message']
cat = form.cleaned_data['cat']
limit = form.cleaned_data['limit']
for element in Emails.objects.filter(active=True, category__name=cat)[:limit]:
try:
tasks.send.delay(from_mail, subject, message, element.address)
except Exception as ex:
print(ex)
return redirect('error')
print(str(element))
element.active = False
element.save()
return redirect('home')
else:
form = EmailForm()
return render(request, 'emails/index.html', {'form': form})
任务.py
import time
from django.core.mail import send_mail
@shared_task
def send(from_mail: str, subject: str, message: str, to_email: str):
time.sleep(20)
send_mail(subject=subject,
from_email=from_mail,
message=message,
recipient_list=[to_email, ])
return True
我尝试直接在 Celery 任务中循环模型,但同样的问题!