Django在模板中检查表单错误代码

时间:2017-04-26 21:50:10

标签: django django-forms django-templates

我正在使用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,我宁愿不这样做。

2 个答案:

答案 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作为字段参数。