有没有办法确定验证错误与包含多个表单的模板的哪种形式相关联?
让我解释一下这个场景。我在base.html中有登录窗口弹出脚本
<div id="dialog1" class="window">
<form method="post" action="/accounts/login/?next=/IW/home" id='login-form' name=login-form>{% csrf_token %}
<div class="d-header">
{{ form.non_field_errors }}
<input type="text" name="username" id="id_username" value="" onclick="this.value=''"/><br/>
<input type="password" name="password" id="id_password" value="" onclick="this.value=''"/><br/>
<input type="hidden" name="login_form" value="1" />
<input type="submit" value="login" />
</div>
{% endif %}
</div>
</form>
</div>
<div id="mask"></div>
{% if form.non_field_errors %}
<script>
var maskHeight = $(document).height();
var maskWidth = $(window).width();
//Set heigth and width to mask to fill up the whole screen
$('#mask').css({'width':maskWidth,'height':maskHeight});
$('#mask').show();$('.window').show();
</script>
{% endif %}
当所有其他模板扩展base,html时,如果出现错误non_field错误,则会弹出登录窗口。我想仅在登录表单提交时才显示登录错误,而不提交其他形式的非字段错误。
为此,我需要识别form.something这样的名称{%ifequal form.form_name login_form%} - 显示登录错误。这可能吗?
答案 0 :(得分:0)
它们与模板中的“形式”名称没有什么特别之处。它只是一个默认的上下文名称,您可以选择为您喜欢的表单命名。
只需在您的上下文中以不同方式命名表单:
from django.http import Http404
def detail(request, poll_id):
# NOTE: This view code isn't really form processing code, just using it to show
# how you can pass different names into your template context.
login_form = MyLoginForm()
detail_form = MyDetailForm()
try:
p = Poll.objects.get(pk=poll_id)
except Poll.DoesNotExist:
raise Http404
return render_to_response('polls/detail.html', {'poll': p, 'login_form': login_form, 'detail_form': detail_form})
然后:
<div id="dialog1" class="window">
<form method="post" action="/accounts/login/?next=/IW/home" id='login-form' name=login-form>
{% csrf_token %}
<div class="d-header">
{{ login_form.non_field_errors }}
.
.
.
此外,如果您想要使用相同表单类型的多个实例,请查看formsets