Django-fr

Forum

#1 27-08-2015 13:37:11

Napoleon
Membre
Inscription : 27-08-2015
Messages : 16

Redecoupage d'une fonctions views.py

Boniour, alors.

Je voulais redécouper une fonction de mon views.py qui devenait trop volumineuse. J'ai donc créer une fonction dans mon forms.py que j'appelais depuis ma vue.

Voici le code:

-Pour views.py

def proposal_create(request):
    """                                                                                                              
    Add a new proposal in the table Proposals                                                                        
    Manage the webpage new_proposal                                                                                  
    """
 
    keywords = Keywords.objects.all() # send the list of existing keywords                                           
    check = 0
 
    if request.method == 'POST':
 
        if 'submit' in request.POST :
 
            form = ProposalForm(request.POST, request.FILES)
            if form.is_valid():
 
                proposal = form.save(commit=False)
                try:
                    name_bdd = User.objects.get(lastName = request.POST['pi_last_name']) #risque de bug avec bdd vide\
 !                                                                                                                   
                    if name_bdd.firstName != request.POST['pi_first_name']: #risque de bug avec bdd vide             
                        raise
                except:
                    return render(request, 'new_user.html')
 
                messages.info(request, "1")
                try:
                    messages.info(request, "2")
                    check_co_pi_exist(request)
                    proposal.save()
                    messages.info(request, "Proposal enregistré !")
                    messages.info(request, "6")
                    proposal.user_link.add(name_bdd)
                    messages.info(request, "6.1")
                    for elem in my_co_pi:
                        first_and_last_name = elem.split()
                        try:
                            messages.info(request, "7")
                            name_bdd2 = User.objects.get(lastName = first_and_last_name[1])
                            if name_bdd2.firstName != first_and_last_name[0]:
                                raise
                        except:
                            messages.info(request, "8")
                            #pass                                                                                    
                        proposal.user_link.add(name_bdd2)
                    messages.info(request, proposal.user_link.all())
                except:
                    pass

-Pour forms.py

def     check_co_pi_exist(request):
 
    messages.info(request, "3")
    my_co_pi = request.POST['co_pi'].split(',')
    for elem in my_co_pi:
        first_and_last_name = elem.split()
        try:
            messages.info(request, "4.0")
            name_bdd = User.objects.get(lastName = first_and_last_name[1])
            messages.info(request, "4.1")
            if name_bdd.firstName != first_and_last_name[0]:
        messages.info(request, "4.2")
                raise
        except:
            messages.info(request, "5")
            messages.error(request, "Votre Co_Pi, M/Mme: {0} {1} n'existe pas.\nS'il vous plait, ajoutez le a notre \
base de données.".format(first_and_last_name[0], first_and_last_name[1]))
            raise

Voila. Donc, comme vous pouvez le voir dans le code j'a iutilisé des messages.info pour savoir ou mon code plantait. Il s'avère que je ne vois jamais les messages "Proposal enregistré !" ou "6" s'afficher. De plus, j'ai vérifié, rien n'a été sauvegarder dans ma base de données.

Ce qui me laisse a penser que c'est donc proposal.save qui ne marche pas hmm

Pourtant avant quand tout mon code se situait dans la fonction proposal_create, dans mon fichier views.py cela marchait. Une idée de pourquoi cela ne marche plus ? Je suis complètement perdu sad

PS: Sinon, tout conseil sur comment redécouper proprement ses fonctions contenues dans views.py m'intéresse, je viens de commencer Django et Python et parfois c'est encore très mystérieux. Alors n'hésitez pas ! wink

Hors ligne

#2 28-08-2015 10:36:23

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : Redecoupage d'une fonctions views.py

Bonjour,

les try / except "ouvert" (comprendre sans exceptions particulières) peuvent passer sous silence tout un tas d'erreurs. Je vous conseillerai donc d'une part d'utiliser logging au lieu de messages et d'autre part de loger les exceptions ou de supprimer votre try/except afin de voir où se situe le problème.

Hors ligne

Pied de page des forums