类型的对象不是 JSON 可序列化的 Django

问题描述 投票:0回答:0

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 任务中循环模型,但同样的问题!

django celery django-celery celery-task
© www.soinside.com 2019 - 2024. All rights reserved.