我正在使用Django 1.10并试图找到一种方法来检查模板内部表单的错误代码。所以我尝试了一些东西,比如errors.as_data或errors.as_json,但是我无法解析不同的值(除了使用javascript)。可能是这样的吗?
<p>{% for key, value in form.errors.items %}
{{ value }}
{% if code == 'inactive_account'%}
// do some stuff
{% endif %}
{% endfor %}
</p>
但我不知道如何获取此错误代码。有什么建议吗?
PS:我知道解决方案是在视图内部进行,但由于我使用的是已经制作的django,我宁愿不这样做。答案 0 :(得分:3)
字典form.errors
不包含ValidationError
个实例。您需要使用as_data
方法。
请注意,您需要遍历每个键的错误列表,然后您可以检查代码。
{% for key, key_errors in form.errors.as_data.items %}
{{ key }}
{% for error in key_errors %}
{% if error.code == 'inactive_account'%}
// do some stuff
{% endif %}
{% endfor %}
{% endfor %}
答案 1 :(得分:0)
还有其他方法可以检查错误代码。 您可以使用has_error来检查错误代码。
private void GearrayListEmailList(string strCheckFolder)
{
try
{
LB_ActionError.Text = string.Empty;
PH_MsgDetail.Visible = false;
ArrayList arrayListEmailList = EmailMsg.GetEmailList(strCheckFolder);
LB_CurBox.Text = string.Format(CultureInfo.CurrentCulture, "{0} ({1})", strCheckFolder, arrayListEmailList.Count);
int intTotal = arrayListEmailList.Count;
if (intTotal == 0)
{
LB_ActionStatus.Text = Utility.SetActStatus(true, "There is no email message found in this folder.");
GV_EmailList.DataSource = new ArrayList();
GV_EmailList.DataBind();
GV_EmailList.Visible = false;
}
else
{
LB_ActionStatus.Text = Utility.SetActStatus(true, string.Format(CultureInfo.CurrentCulture, "There are {0} email message(s) found in this folder.", intTotal));
GV_EmailList.DataSource = arrayListEmailList;
GV_EmailList.DataBind();
GV_EmailList.Visible = true;
GV_EmailList.SelectedIndex = -1;
}
}
catch (Exception ex)
{
LB_ActionStatus.Text = Utility.SetActStatus(false, ex.Message);
}
LB_AdminEmailBox.Text = string.Format(CultureInfo.CurrentCulture, Entity.GetSetting("RootURI"), strCheckFolder);
}
要检查非字段错误,请使用NON_FIELD_ERRORS作为字段参数。