Django-fr

Forum

#1 04-03-2013 10:53:42

sesame
Membre
Inscription : 22-03-2011
Messages : 263

gestion d'erreur

bonjour

j' ai une fonction qui lit des donnees dans ma base et me retourne la valeur max et min correspondant a un certain materiau et une proprieté specifique

je voudrai lorsqu'aucune donnee n'est enregistreé pour le materiau XXX il y ait un message d'erreur en retour

def calcul(maref, maprop):
   
    data =  Essai_Temperature.objects.filter(name__name=maref, val_champ=maprop)
   
    val_min_base=[]
    val_max_base=[]
    val_T_base=[]
    vref = []
   
    for e in data:
       
        val_T_base.append(e.valT)
        val_min_base.append(e.val10)
        vref.append(e.val_ref)     
    l1=0
    l2=0
    l3=0
    sizeTT=0
   
    val_TT_base=[]
                                       
    sizedata = len(val_T_base)

    if sizedata==0:
        print 'passage 0'
        return HttpResponse('<h1>aucune donnee dans la base</h1>')

.....

je detecte bien que la taille de mon tableau est nulle mais je continue a executer le reste du code

pour avoir en retour le message suivant

need more than 1 value to unpack...

est ce bien HttpResponse qu'il faut utiliser ?

Hors ligne

#2 05-03-2013 08:30:40

sesame
Membre
Inscription : 22-03-2011
Messages : 263

Re : gestion d'erreur

bonjour

en fait j'ai une premiere fonction qui appelle la fonction calcul

celle ci lit dans la base les donnees enregistrees de temperature pour un materiau donné et renvoie la liste des temperatures, la valeur min, la valeur max

voici la premiere fonction

def affich_graphe(request):
    try:
       
        val_nom = request.GET['materiau']
        valT1 = request.GET['propriete']            # propriete 1
       
       
        #lavaleur1 = request.GET['valeur1']
        interpol = request.GET['interpolation']
       
        print val_nom
        print valT1
       
       
       
        moy=[]
        moy1=[]
       

        if val_nom !='0':
            valeur_T, valeur_min, valeur_max, valeur_moy, nomfichier = calcul(val_nom, valT1)       
            moy = moyenne(valeur_min, valeur_max)

            print 'vt', valeur_T
       
           
               
       
        datas20= {'val_T':valeur_T, 'val_min': valeur_min, 'val_max': valeur_max,
                  'val_moy': valeur_moy,
                  'inter':interpol}

       
                  #'lechoix1':lavaleur1, 'inter':interpol}
       
         
        data = simplejson.dumps(datas20)
       
        return HttpResponse(data, mimetype= 'application/json')

    except Exception, msg:
        print 'erreur affichage', msg
        raise


lorsque le materiau est enregistre mais qu'il n'ya aucune donnee temperature enregistree la liste est vide et j'obtient le message

erreur affichage need more than 1 value to unpack

moi ce que je voudrai c'est que j'ouvre une nouvelle page et que j'affiche

"aucune donnee enregistree"

voila la fonction calcul (ecourtée)

def calcul(maref, maprop):
    try:
        data =  Essai_Temperature.objects.filter(name__name=maref, val_champ=maprop)
       
        val_min_base=[]
        val_max_base=[]
        val_T_base=[]
        vref = []
   
        for e in data:
            val_T_base.append(e.valT)
            val_min_base.append(e.val10)
            vref.append(e.val_ref)     
        l1=0
        l2=0
        l3=0
        vv=0
        sizeTT=0
   
        val_TT_base=[]
                                       
        sizedata = len(val_T_base)
       
                   
    # determination du nb de series identiques

        if sizedata==0:
            print 'pass'
            raise(ValueError)

        else:
       
            while l2 <= sizedata-2:
                if (l2==0):
                    val_TT_base.append(val_T_base[l2])
                else:
.........

return valeur_T, valeur_min, valeur_max, valeur_moy, nomfichier

    except ValueError:
        print 'pass2'
        return HttpResponse('material/erreur.html') 

lorsque la liste est vide (sizedata=0) je vais bien printer 'pass2' mais rien d'autre

visiblement ce ne doit pas etre HttpResponse le bon moyen de proceder... ??

Hors ligne

Pied de page des forums