Vous n'êtes pas identifié(e).
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
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
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 !
Hors ligne
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