Django 表单提交后修改数据
Modify data after Django form submission
我正在寻找让用户修改为纠正填写过程中的错误而创建的表格的可能性。
有一些用户步骤(我在第 4 步被阻止):
1) HTML 页面上显示了一个空表单
2) 用户填写表格并点击提交按钮
验证数据并将对象保存在 MySQL 数据库中。
3) 我展示了一份简历,以验证所有数据是否正确
4) 我想在简历下方放一个按钮 Modify
。用户可以修改一个或多个字段并更新 MySQL 数据库。
问题如下:我不知道该怎么做(第 4 步)。当我开始使用 Django 时,是否可以获得一些建议或部分脚本?
views.py :
def IdentityFormulary(request) :
form = IdentityForm(request.POST or None)
if form.is_valid() :
instance = form.save()
return HttpResponseRedirect('formulaire_traite')
context = {
"form" : form,
}
return render(request, 'form_Identity.html', context)
def CompletedFormulary(request) :
identity = Identity.objects.all().order_by("-id")[0]
context = {
"identity" : identity,
}
return render(request, 'recapitulatif_identity.html',context)
我的 HTML 模板:
<h2 align="center"> Votre formulaire a été validé </align> </h2>
{% block content %}
Votre personne porte le numéro : {{ identity.id }}
<h3> Récapitulatif des données enregistrées : </h3>
<li> Civilité : {{identity.title}}</li>
<li> Nom : {{identity.lastname}}</li>
<li> Prénom : {{identity.firstname}}</li>
<li> Sexe : {{identity.sex}}</li>
<li> Date de Naissance : {{identity.birthday}}</li>
<li> Ville de Naissance : {{identity.birthcity}}</li>
<li> Pays de Naissance : {{identity.birthcountry}}</li>
<li> Nationalité : {{identity.nationality}}</li>
<li> Profession : {{identity.job}}</li>
<li> Adresse : {{identity.adress}}</li>
<li> Ville : {{identity.city}}</li>
<li> Code Postal : {{identity.zip}}</li>
<li> Pays : {{identity.country}}</li>
<li> Email : {{identity.mail}}</li>
<li> Téléphone : {{identity.phone}}</li>
{% endblock %}
<br></br>
<form method='POST' action='/Identity/accueil'> {% csrf_token %}
<input type ="submit" value="Retour fiche identité" />
</form>
<form method='POST' action='/BirthCertificate/accueil'> {% csrf_token %}
<input type ="submit" value="Création d'un acte de naissance" />
</form>
我看到了一些可以对应我的步骤 4 的功能:例如 Form.cleaned_data
但我不知道如何实现这一步。
谢谢!
编辑:
我正在阅读有关类似内容的部分内容:
instance = form.save(commit=False)
instance.save()
我认为可以输入数据,但不能立即将其保存在数据库中。
我走对了?
你的第一步没问题。在第二步中,如果您试图让用户提交部分有效的表单,保存一半的值,然后让他们更新其余的值,那么您会使事情变得过于复杂。在表单完全有效之前不要保存任何值。
如果您遵循该建议,当您将无效表单传回模板时,将执行第三步。您将获得一个表单,其中预先填写了正确的字段,并通过验证错误消息突出显示了不正确的字段,以帮助用户了解他们做错了什么。请参阅此代码中的注释以获取解释:
def IdentityFormulary(request) :
form = IdentityForm(request.POST or None) # request.POST includes invalid data
if form.is_valid() : # Returns False because user incorrectly submitted form
instance = form.save()
return HttpResponseRedirect('formulaire_traite')
context = {
"form" : form, # This is the partially-filled, invalid form with error messages
}
return render(request, 'form_Identity.html', context) # This re-renders the template with a partially filled form, _with_ error messages to help the user.
然后,您的第四步需要进行更改,使 "Modify" 按钮实际上与 "Submit" 按钮相同。用户只是重新提交之前无效的相同表单。希望这次他们编辑他们的回复,否则他们会收到错误消息并且必须重新提交,直到表单 returns 有效。如果表单在提交时有效,数据库将在您的行 form.save()
.
上更新
我正在寻找让用户修改为纠正填写过程中的错误而创建的表格的可能性。
有一些用户步骤(我在第 4 步被阻止):
1) HTML 页面上显示了一个空表单
2) 用户填写表格并点击提交按钮 验证数据并将对象保存在 MySQL 数据库中。
3) 我展示了一份简历,以验证所有数据是否正确
4) 我想在简历下方放一个按钮
Modify
。用户可以修改一个或多个字段并更新 MySQL 数据库。
问题如下:我不知道该怎么做(第 4 步)。当我开始使用 Django 时,是否可以获得一些建议或部分脚本?
views.py :
def IdentityFormulary(request) :
form = IdentityForm(request.POST or None)
if form.is_valid() :
instance = form.save()
return HttpResponseRedirect('formulaire_traite')
context = {
"form" : form,
}
return render(request, 'form_Identity.html', context)
def CompletedFormulary(request) :
identity = Identity.objects.all().order_by("-id")[0]
context = {
"identity" : identity,
}
return render(request, 'recapitulatif_identity.html',context)
我的 HTML 模板:
<h2 align="center"> Votre formulaire a été validé </align> </h2>
{% block content %}
Votre personne porte le numéro : {{ identity.id }}
<h3> Récapitulatif des données enregistrées : </h3>
<li> Civilité : {{identity.title}}</li>
<li> Nom : {{identity.lastname}}</li>
<li> Prénom : {{identity.firstname}}</li>
<li> Sexe : {{identity.sex}}</li>
<li> Date de Naissance : {{identity.birthday}}</li>
<li> Ville de Naissance : {{identity.birthcity}}</li>
<li> Pays de Naissance : {{identity.birthcountry}}</li>
<li> Nationalité : {{identity.nationality}}</li>
<li> Profession : {{identity.job}}</li>
<li> Adresse : {{identity.adress}}</li>
<li> Ville : {{identity.city}}</li>
<li> Code Postal : {{identity.zip}}</li>
<li> Pays : {{identity.country}}</li>
<li> Email : {{identity.mail}}</li>
<li> Téléphone : {{identity.phone}}</li>
{% endblock %}
<br></br>
<form method='POST' action='/Identity/accueil'> {% csrf_token %}
<input type ="submit" value="Retour fiche identité" />
</form>
<form method='POST' action='/BirthCertificate/accueil'> {% csrf_token %}
<input type ="submit" value="Création d'un acte de naissance" />
</form>
我看到了一些可以对应我的步骤 4 的功能:例如 Form.cleaned_data
但我不知道如何实现这一步。
谢谢!
编辑:
我正在阅读有关类似内容的部分内容:
instance = form.save(commit=False)
instance.save()
我认为可以输入数据,但不能立即将其保存在数据库中。 我走对了?
你的第一步没问题。在第二步中,如果您试图让用户提交部分有效的表单,保存一半的值,然后让他们更新其余的值,那么您会使事情变得过于复杂。在表单完全有效之前不要保存任何值。
如果您遵循该建议,当您将无效表单传回模板时,将执行第三步。您将获得一个表单,其中预先填写了正确的字段,并通过验证错误消息突出显示了不正确的字段,以帮助用户了解他们做错了什么。请参阅此代码中的注释以获取解释:
def IdentityFormulary(request) :
form = IdentityForm(request.POST or None) # request.POST includes invalid data
if form.is_valid() : # Returns False because user incorrectly submitted form
instance = form.save()
return HttpResponseRedirect('formulaire_traite')
context = {
"form" : form, # This is the partially-filled, invalid form with error messages
}
return render(request, 'form_Identity.html', context) # This re-renders the template with a partially filled form, _with_ error messages to help the user.
然后,您的第四步需要进行更改,使 "Modify" 按钮实际上与 "Submit" 按钮相同。用户只是重新提交之前无效的相同表单。希望这次他们编辑他们的回复,否则他们会收到错误消息并且必须重新提交,直到表单 returns 有效。如果表单在提交时有效,数据库将在您的行 form.save()
.