Я хочу получать сообщение в зависимости от типа кнопки, которую я нажимаю.Вместо этого django реагирует странно, когда я нажимаю кнопку и отправляю мне другую страницу, которая не должна отображаться.Urls.py
re_path(r'^liste-ue/$', views.liste_ue, name="liste_ue"),
re_path(r'^ajouter-ue/$', views.ajouter_ue, name="ajouter_ue"),
re_path(r'^modifier-ue/(?P<code>[a-zA-Z0-9 .-]{4,10})/$', views.modifier_ue, name="modifier_ue"),
Views.py
# La view pour qui permet de lister et de créer des UEs. Seul les administrateurs y ont accèes.
def liste_ue(request):
ues = UE.objects.all();
return render(request, 'felyn/admin/liste_ue.html', {'ues': ues});
# La view qui permet d'ajouter les UEs. seul les administrateurs y ont accès.
def ajouter_ue(request):
if request.method == 'POST':
ue_form = UEForms(request.POST);
if ue_form.is_valid():
code_ue = ue_form.clean_code_ue();
intitule_ue = ue_form.clean_intitule_ue();
semestre = ue_form.cleaned_data['semestre'];
if 'continuer' in request.POST:
ue_form.save();
ue_form = UEForms();
return render(request, 'felyn/admin/ajouter_ue.html', {'ue_form':ue_form});
elif 'quitter' in request.POST:
ue = ue_form.save();
ues = UE.objects.all();
return render(request, 'felyn/admin/liste_ue.html', {'ues': ues});
else:
return render(request, 'felyn/admin/ajouter_ue.html', {'ue_form': ue_form});
else:
ue_form = UEForms();
return render(request, 'felyn/admin/ajouter_ue.html', {'ue_form': ue_form});
# La view qui permet de supprimer une UE
def modifier_ue(request, code):
if request.method == 'POST':
ue_form = UEForms(request.POST);
if ue_form.is_valid() and 'supprimer' in request.POST:
return HttpResponse('supprimer');
elif ue_form.is_valid() and 'continuer' in request.POST:
return HttpResponse('continuer');
elif ue_form.is_valid() and 'quitter' in request.POST:
return HttpResponse('quitter');
else:
return render(request, 'felyn/admin/ajouter_ue.html', {'ue_form': ue_form});
else:
ue = UE.objects.get(code_ue=code);
ue_form = UEForms(instance=ue);
return render(request, 'felyn/admin/modifier_ue.html', {'ue_form': ue_form, 'ue': ue, 'code': code});
ajouter_ue.html
<form action="{% url 'ajouter_ue' %}" method="post">
{% csrf_token %}
{{ ue_form.non_field_errors }}
<div class="form-group row">
<label for="{{ ue_form.id_for_label }}" class="col-sm-2 col-form-label">Code</label>
<div class="col-sm-5"> {{ ue_form.code_ue.errors }}{{ ue_form.code_ue }}</div>
</div>
<div class="form-group row">
<label for="{{ ue_form.id_for_label }}" class="col-sm-2 col-form-label">Intitulé</label>
<div class="col-sm-5">{{ ue_form.intitule_ue.errors }}{{ ue_form.intitule_ue }}</div>
</div>
<div class=" form-group row">
<label for="{{ ue_form.id_for_label }}" class="col-sm-2 col-form-label">Semestre</label>
<div class="col-sm-5">{{ ue_form.semestre.errors }}{{ ue_form.semestre }}</div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary" name="continuer">Enregistrer et ajouter à nouveau</button>
<button type="submit" class="btn btn-primary" name="quitter">Enregistrer</button>
</div>
</form>
modifier_ue.html
<form action="{% url 'modifier_ue' code=code %}" method="post">
{% csrf_token %}
{{ ue_form.non_field_errors }}
<div class="form-group row">
<label for="{{ ue_form.id_for_label }}" class="col-sm-2 col-form-label">Code</label>
<div class="col-sm-5"> {{ ue_form.code_ue.errors }}{{ ue_form.code_ue }}</div>
</div>
<div class="form-group row">
<label for="{{ ue_form.id_for_label }}" class="col-sm-2 col-form-label">Intitulé</label>
<div class="col-sm-5">{{ ue_form.intitule_ue.errors }}{{ ue_form.intitule_ue }}</div>
</div>
<div class=" form-group row">
<label for="{{ ue_form.id_for_label }}" class="col-sm-2 col-form-label">Semestre</label>
<div class="col-sm-5">{{ ue_form.semestre.errors }}{{ ue_form.semestre }}</div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-danger" name="supprimer">Supprimer</button>
<button type="submit" class="btn btn-primary" name="continuer">Enregistrer et ajouter à nouveau</button>
<button type="submit" class="btn btn-primary" name="quitter">Enregistrer</button>
</div>
</form>
Когда яЯ нахожусь в шаблоне "modifier_ue.html", и я нажимаю на кнопку, URL говорит мне, что я нахожусь в шаблоне "modifer_ue.html", но рендеринг страницы - это "ajouter_ue.html".Таким образом, URL-адрес правильный, но не рендеринг.как это решить?
после того, как avair сделал несколько тестов, я понял, что ue_form ().is_valid всегда будет неправильным.ПРИЧИНА эту часть кода
>>>ue = UE.objects.get(code_ue='INF401')
>>>ue_form = UEForms(instance=ue)
>>>ue_form.is_valid()
False
как сделать экземпляр, переданный в качестве параметра, сделать форму всегда действительной?