【发布时间】:2020-07-10 04:23:41
【问题描述】:
我希望两个不同的表单在同一个模板中,但第一个表单显示两次而不是第二个,此外,我不知道 Password no set 建议是否会消失,请帮忙?
模板
<div class="tab-pane container p-0 active" id="home1">
<form method="POST" action="#" id="datosForm" > {% csrf_token %}
<p>Por favor, no dejes ningún campo en blanco.
{{ form.as_ul }}
<button class="btn btn-primary py-1 px-2" type="submit" name="datosForm"> Save </button>
</p>
</form>
</div>
<div class="tab-pane container p-0 fade" id="home2">
<form method="POST" action="#" id="contraForm"> {% csrf_token %}
<p>Por favor, llena los siguientes campos para cambiar tu contraseña.
{{form.as_ul }}
<button class="btn btn-primary py-1 px-2" type="submit" name="contraForm" > Save </button>
</p>
</form>
</div>
views.py
def profileedit_view(request):
form= PerfilEditadoForm(request.POST or None)
if request.method== 'POST'and 'datosform' in request.POST:
form.instance = request.user
if form.is_valid():
form.save()
return redirect('profileedit')
else:
form= PerfilEditadoForm(instance=request.user)
args= {'form': form}
return render(request, 'profileedit.html', args)
context = {
'form': form
}
return render(request, "profileedit.html", context)
def change_password_view(request):
if request.method == 'POST' and 'contraform' in request.POST:
form = PasswordChangeForm(request.user, request.POST)
if form.is_valid():
user = form.save()
update_session_auth_hash(request, user) # Important!
messages.success(request, 'Contraseña cambiada con éxito')
return redirect('profileedit')
else:
messages.error(request, 'Ha ocurrido un error.')
else:
form = PasswordChangeForm(request.user)
context = {
'form': form
}
return render(request, 'profileedit.html', context)
【问题讨论】:
-
你在模板中多次渲染
{{form.as_ul }}。 -
是的,对不起,我以为它调用了第二种形式,我可以写什么来代替?
-
只需给这两个表单取一个不同的名称(如
form1和form2),然后将它们都传递给模板,然后使用{{ form1.as_ul }}和{{ form2.as_ul }}渲染它们。 -
好的...我猜这很奇怪...但是现在没有任何表格显示,例如,一个都没有。
-
但你的上下文是
context = {'form1': some_form, 'form2': some_form2}?
标签: python html django forms django-forms