在我的模板中,我有:
{% if form.non_field_errors %}
<div class="alert alert-info" role="alert">
{% if "already exists" in form.non_field_errors %}
You've already submitted your request once. Please wait for confirmation, or email us at support@relsoft.in
{% else %}
{{ form.non_field_errors }}
{% endif %}
</div>
{% endif %}
似乎{% if "already exists" in form.non_field_errors %}
块不起作用。我在输出中得到以下内容:
<div class="alert alert-info" role="alert">
<ul class="errorlist nonfield"><li>Pendingclinics with this Name, Mobile and Email already exists.</li></ul>
</div>
答案 0 :(得分:3)
在回答这个问题之前,请注意上面@DanielRoseman的评论:这确实是错误的方法。您应该在表单上定义一个自定义的clean()方法,并在那里引发特定的错误。
因此,尽管下面的代码回答了您的问题,但这不是最佳实践!
form.non_field_errors
是一个列表。当你说
if s in form.non_field_errors
这意味着您正在检查form.non_field_errors
是否包含与s完全相等的元素。在您的代码中情况并非如此。您的form.non_field_errors
包含一个元素(字符串),该元素本身包含子字符串“已经存在”。
您想遍历错误并检查其中一个是否包含此子字符串。对于您要在视图中而不是模板中执行的逻辑来说,这似乎就像我。例如,在视图中:
was_submitted_before = any(["already exists" in s for s in form.non_field_errors])
然后可以将was_submitted_before
变量传递给模板,然后在模板中测试是否为真。
答案 1 :(得分:1)
form.non_field_errors
是一个字符串列表,而不是单个字符串。
因此,您要询问'already exists'
中是否有['Pendingclinics with this Name, Mobile and Email already exists.']
,即false
。
恐怕您必须做一些复杂的事情才能检查是否存在特定错误。