我期待加入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中设置了消息上下文处理器吗? –