我期待加入Django messages
在我的形式,以顯示success message
如果我的形式進行驗證,error message
如果我的表單未通過驗證(丟失字段,數據類型的錯誤,...)Django的消息框架
我的錯誤信息非常完美,但是我的表單無效時,我無法克服在下一個模板中顯示我的成功消息。
這是我的看法:
def BirthCertificate_Form_unique_number(request) :
validity = []
submission = []
#User fill some fields
query_social_number = request.GET.get('social_number')
query_social_number_father = request.GET.get('social_number_father')
query_social_number_mother = request.GET.get('social_number_mother')
success = False
if request.method == 'POST':
form = BirthCertificateForm2(request.POST or None)
if form.is_valid() : # Vérification sur la validité des données
post = form.save()
messages.success(request, 'Le formulaire a été enregistré !')
return HttpResponseRedirect(reverse('BC_treated2', args=(messages,),kwargs={'id': post.id}))
else:
messages.error(request, "Le formulaire est invalide !")
elif request.method == 'GET':
form = BirthCertificateForm2()
parent1 = Person.objects.filter(social_number=query_social_number_father)
parent2 = Person.objects.filter(social_number=query_social_number_mother)
if query_social_number :
if Person.objects.filter(social_number = query_social_number).exists() == True :
individu = get_object_or_404(Person, social_number = query_social_number)
messages.success(request, 'Le numéro unique existe !')
form.fields['fk_parent1'].queryset = parent1
form.fields['fk_parent2'].queryset = parent2
form.fields['lastname'].initial = individu.lastname
form.fields['firstname'].initial = individu.firstname
form.fields['birthday'].initial = individu.birthday
form.fields['birthcity'].initial = individu.birthcity
form.fields['birthcountry'].initial = individu.birthcountry
form.fields['sex'].initial = individu.sex
form.fields['social_number'].initial = individu.social_number
elif Person.objects.filter(social_number = query_social_number).exists() == False :
validity = False
messages.error(request, "Le numéro unique est invalide !")
context = {
"form" : form,
"validity" : validity,
"submission" : submission
}
return render(request, 'BC_form2.html', context)
,並在我的HTML模板:
{% for message in messages %}
<div class="alert {{ message.tags }} alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
{{ message }}
</div>
{% endfor %}
如何時,我的方式是有效的,我可以顯示成功的消息?
編輯:
我的urls.py文件:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^BC_accueil$', views.BirthCertificate_Home, name="BChome"),
url(r'^formulaire$', views.BirthCertificate_Form, name = "BCform"),
url(r'^formulaire2$', views.BirthCertificate_Form_unique_number, name = "BCform2"),
url(r'^formulaire_traite/(?P<id>\d+)/$', views.BirthCertificate_Resume, name="BC_treated"),
url(r'^formulaire2_traite/(?P<id>\d+)/$', views.BirthCertificate_Resume_unique_number, name="BC_treated2"),
url(r'^BirthCertificate_PDF/(?P<id>\d+)/$', views.BirthCertificate_PDF, name="PDF"),
url(r'^not_found$', views.BirthCertificate_notfound, name="BCnotfound"),
]
看起來你還沒有把全面的瞭解你的問題。當表單無效時,你的視圖是否返回'HttpResponse'或'render'? –
我添加了完整的視圖;)如果表單有效,我的視圖返回一個HttpResponse,否則呈現爲 – Deadpool
爲什麼當表單有效時,將'messages'作爲參數傳遞給'reverse'函數?這不應該是必要的。 +您確定在settings.py中設置了消息上下文處理器嗎? –