EncodeError в (метод POST) в Python Django.Post respose 500 - PullRequest
0 голосов
/ 22 января 2019

У меня есть мой класс Python ниже.Мой вопрос заключается в том, что на самом деле означает, что эта ошибка EncodeError в / api / v1 / jobs / apply /> не поддерживает сериализацию в формате JSON.На что он пытается указать, основываясь на моем коде ниже?Кто-нибудь может дать идею?,Значение new_email также ниже:

def new_application (self, data): try:

def new_application(self, data):
        try:
    html = render_to_string("email_templates/new_application.tpl",data)
        name = "testt"
        data["subject"] = "test"
        if env == "localhost":
            msg = EmailMessage(data["subject"], html, name, dev_emails)
            msg.content_subtype = "html"  # Main content is now text/html
            msg.attach_file(data["resume"])
            msg.send()
        else:
            msg = EmailMessage(data["subject"], html, name, [data["company_email"]])
            msg.content_subtype = "html"  # Main content is now text/html
            msg.attach_file(data["resume"])
            msg.send()
    except Exception as e:
        print(str(e))

error

EncodeError at /api/v1/jobs/apply/
<bound method Email.new_application of <v1.lib.emails.Email object at 0x7f6cbe44e908>> is not JSON serializable

Код

class ApplyJob(APIView):

    def email(self, data):
        email_ins = Email()
        c_task.delay(email_ins.new_application, data)

    authentication_classes = (TokenAuthentication,)
    permission_classes = (IsAuthenticated,IsApplicant)

    def post(self, request, format=None):
        data = request.data
        job_applicant_ser = JobApplicantSerializer(data=data)
        applicant = get_applicant_ins(request)

        if applicant.profile_completeness <= 60:
            return Response("You have not complete filling up your profile yet. Please complete it atleast 80% and above percentage..", status=status.HTTP_400_BAD_REQUEST)


        if not applicant.resume:
            return Response("Sorry, Please upload your resume.", status=status.HTTP_400_BAD_REQUEST)

        job =  data.get("job" , None)
        cover_letter = data.get("cover_letter", None)

        if not cover_letter or cover_letter == "":
            return Response("Sorry, please fill your cover letter.", status=status.HTTP_400_BAD_REQUEST)

        apply_job_checker_ins = JobApplicant.objects.filter(job=job,applicant=applicant).count()

        if apply_job_checker_ins > 0:
            return Response("Sorry but you cant apply to this company, it appears that you have already applied.", status=status.HTTP_400_BAD_REQUEST)

        if job:
            job = JobModel.objects.get(pk=job)
        else:
            return Response("Sorry but there is a problem with the application, please refresh page.", status=status.HTTP_400_BAD_REQUEST)

        if job_applicant_ser.is_valid(raise_exception=True):
            job_applicants = job_applicant_ser.save(applicant=applicant,job=job)

        data = {}
        data["job"] = job_applicants.job.title
        data["account_url"] = APP_URL+"/account/job_applicants"
        data["email"] = job_applicants.job.company.user.email
        data["resume"] =  STATIC_ROOT+"/uploads/resume/"+str(job_applicants.applicant.resume)
        data["company_email"] = job_applicants.job.company.user.email

        self.email(data)

        return Response("You have applied to the jo

б.Пожалуйста, убедитесь, что ваша линия всегда открыта. ", Status = status.HTTP_200_OK)

...