Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Pièce jointe avec Django

0 votes

Je développe une application pour une inscription dans une école où je dois récupérer les informations saisies, les mettre dans un template transformer ce template en PDF en l'envoyer en pièce dans un mail que j'envoie en réponse de l'inscription; Les démarche je viens de citer se sont bien passées sauf qu'en envoyant le mail avec la pièce jointe, si je consulte ma boite mail dans mon téléphone je voix pièce jointe PDF, mais quand je me rend sur un navigateur web comme Google Chrome ou autre avec le PC ou le navigateur du téléphone je voix pas la pièce jointe alors le code ne donne pas d'erreur ni sur le terminal ni sur le navigateur vu que la redirection se passe bien . Et là je sais pas où se trouve l'erreur, aidez-moi à dépasser cette partie.
Voici le code du fichier vu et le code du model ou form sont ordinaires aux habitudes de django

def inscription_with_pdf(request):

    form = InscriptionForm(request.POST or None, request.FILES or None)

    if form.is_valid():
        nom                     = form.cleaned_data.get("nom")
        prenom                  = form.cleaned_data.get("prenom")
        date_naissance          = form.cleaned_data.get("date_naissance")
        lieu_naissance          = form.cleaned_data.get("lieu_naissance")
        niveau                  = form.cleaned_data.get("niveau")
        frequence               = form.cleaned_data.get("frequence")
        sexe                    = form.cleaned_data.get("sexe")
        nationalite             = form.cleaned_data.get("nationalite")
        telephone               = form.cleaned_data.get("telephone")
        email                   = form.cleaned_data.get("email")

        ########### "" Renseignement pour le représentant 1 """################


        representant_parent_un                  = form.cleaned_data.get("representant_parent_un")
        nom_parent_un                           = form.cleaned_data.get("nom_parent_un")
        prenom_parent_un                        = form.cleaned_data.get("prenom_parent_un")
        date_naissance_parent_un                = form.cleaned_data.get("date_naissance_parent_un")
        lieu_naissance_parent_un                = form.cleaned_data.get("lieu_naissance_parent_un")
        code_postal_naissance_parent_un         = form.cleaned_data.get("code_postal_naissance_parent_un")
        nationalite_parent_un                   = form.cleaned_data.get("nationalite_parent_un")
        adresse_domicile_parent_un              = form.cleaned_data.get("adresse_domicile_parent_un")
        ville_parent_un                         = form.cleaned_data.get("ville_parent_un")
        telephone_domicile_parent_un            = form.cleaned_data.get("telephone_domicile_parent_un")
        telephone_personnel_parent_un           = form.cleaned_data.get("telephone_personnel_parent_un")
        telephone_professionnel_parent_un       = form.cleaned_data.get("telephone_professionnel_parent_un")
        email_parent_un                         = form.cleaned_data.get("email_parent_un")
        profession_parent_un                    = form.cleaned_data.get("profession_parent_un")


        ########### "" Renseignement pour le représentant 1 """################


        representant_parent_deux                = form.cleaned_data.get("representant_parent_deux")
        nom_jeune_fille_parent_deux             = form.cleaned_data.get("nom_jeune_fille_parent_deux")
        nom_marial_parent_deux                  = form.cleaned_data.get("nom_marial_parent_deux")
        prenom_parent_deux                      = form.cleaned_data.get("prenom_parent_deux")
        date_naissance_parent_deux              = form.cleaned_data.get("date_naissance_parent_deux")
        lieu_naissance_parent_deux              = form.cleaned_data.get("lieu_naissance_parent_deux")
        code_postal_naissance_parent_deux       = form.cleaned_data.get("code_postal_naissance_parent_deux")
        nationalite_parent_deux                 = form.cleaned_data.get("nationalite_parent_deux")
        telephone_domicile_parent_deux          = form.cleaned_data.get("telephone_domicile_parent_deux")
        telephone_personnel_parent_deux         = form.cleaned_data.get("telephone_personnel_parent_deux")
        telephone_professionnel_parent_deux     = form.cleaned_data.get("telephone_professionnel_parent_deux")
        email_parent_deux                       = form.cleaned_data.get("email_parent_deux")
        profession_parent_deux                  = form.cleaned_data.get("profession_parent_deux")
        adresse_domicile_parent_deux            = form.cleaned_data.get("adresse_domicile_parent_deux")

        ######################""""""" Situation Matrimoniale """"""""""#####################
        situation_familiale                     = form.cleaned_data.get("situation_familiale")



        obj = Inscription.objects.create(


                    ######## Elève ##################
                    nom                     = nom,
                    prenom                  = prenom,
                    date_naissance          = date_naissance,
                    lieu_naissance          = lieu_naissance,
                    niveau                  =  niveau,
                    frequence               = frequence,
                    sexe                    = sexe,
                    nationalite             = nationalite,
                    telephone               = telephone,
                    email                   = email,


                    #######" Parent 1 ############

                    representant_parent_un                  = representant_parent_un,
                    nom_parent_un                           = nom_parent_un,
                    prenom_parent_un                        = prenom_parent_un,
                    date_naissance_parent_un                = date_naissance_parent_un,
                    lieu_naissance_parent_un                = lieu_naissance_parent_un,
                    code_postal_naissance_parent_un         = code_postal_naissance_parent_un,
                    telephone_domicile_parent_un            = telephone_domicile_parent_un,
                    telephone_personnel_parent_un           = telephone_personnel_parent_un,
                    telephone_professionnel_parent_un       = telephone_professionnel_parent_un,
                    profession_parent_un                    = profession_parent_un,



                    #######" Parent 2 ############

                    representant_parent_deux                = representant_parent_deux,
                    nom_jeune_fille_parent_deux             = nom_jeune_fille_parent_deux,
                    nom_marial_parent_deux                  = nom_marial_parent_deux,
                    prenom_parent_deux                      = prenom_parent_deux,
                    date_naissance_parent_deux              = date_naissance_parent_deux,
                    lieu_naissance_parent_deux              = lieu_naissance_parent_deux,
                    code_postal_naissance_parent_deux       = code_postal_naissance_parent_deux,
                    telephone_domicile_parent_deux          = telephone_domicile_parent_deux,
                    telephone_personnel_parent_deux         = telephone_personnel_parent_deux,
                    telephone_professionnel_parent_deux     = telephone_professionnel_parent_deux,
                    profession_parent_deux                  = profession_parent_deux,


                    ######################""""""" Situation Matrimoniale """"""""""#####################
                    situation_familiale                     = situation_familiale
            )




        context = {"models_instance": obj}


        pdf_inscription = render_to_pdf("inscriptions/inscription_email_pdf.html", context)
        filename = "mypdf_{}.pdf".format(obj.nom)
        obj.pdf_inscription.save(filename, BytesIO(pdf_inscription.content))

        subject = """"Dossier d'inscription à l'école Saint Exupéry"""


        with open(settings.BASE_DIR + "/inscriptions/templates/inscriptions/inscription_email_message.txt") as f:
                inscription_message = f.read()


        from_email = settings.EMAIL_HOST_USER
        to_email = [obj.email, obj.email_parent_un, obj.email_parent_deux]

        email_pdf = EmailMultiAlternatives(

            subject = subject,
            body =inscription_message,
            from_email = from_email,
            to=to_email,    
            )

        instance_attach = obj.pdf_inscription.read()
        # print(instance.pdf.name, instance.pdf.size)
        email_pdf.attach_alternative(instance_attach, "application/pdf")
        # import pdb;pdb.set_trace()

        email_pdf.send()

        return redirect(reverse("home"))

    return render(request, "inscriptions/inscriptionform.html", {"form": form})
demandé 4-Mai par Michel

ce n'est pas juste l'anti spam qui a viré le pdf ?
parce que si c'est visible avec le mobile, il n'y a aucun probleme avec le code

1 Réponse

0 votes

j'ai eu le cas,avec une messagerie zimbra.

sur outlook pas de pièces jointes, sur zimbra on les voyaient.

répondu 15-Mai par bidochon (202 points)
...