WTForms dostat chyby

hlasů
11

V současné době v WTForms přístup k chybám budete muset procházet chyb v terénu jako tak:

for error in form.username.errors:
        print error

Vzhledem k tomu, Stavím aplikace odpočinku, která nepoužívá žádné názory formuláře, jsem nucen kontrolovat prostřednictvím všech polí formuláře s cílem zjistit, kde leží chyba.

Existuje způsob, jak bych mohl udělat něco takového:

for fieldName, errorMessage in form.errors:
        ...do something
Položena 24/06/2011 v 04:31
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
23

Samotný formobjekt má errorsatribut, který obsahuje názvy polí a jejich chyby ve slovníku. Takže byste mohli udělat:

for fieldName, errorMessages in form.errors.items():
    for err in errorMessages:
        # do something with your errorMessages for fieldName
Odpovězeno 24/06/2011 v 18:01
zdroj uživatelem

hlasů
16

Pro každého, kdo hledá, jak toho dosáhnout v baňce šablon:

{% for field in form.errors %}
{% for error in form.errors[field] %}
    <div class="alert alert-error">
        <strong>Error!</strong> `error`
    </div>
{% endfor %}
{% endfor %}
Odpovězeno 20/02/2013 v 21:44
zdroj uživatelem

hlasů
14

Čistší řešení pro baňky šablony:

Python 3:

{% for field, errors in form.errors.items() %}
<div class="alert alert-error">
    {{ form[field].label }}: {{ ', '.join(errors) }}
</div>
{% endfor %}

Python 2:

{% for field, errors in form.errors.iteritems() %}
<div class="alert alert-error">
    {{ form[field].label }}: {{ ', '.join(errors) }}
</div>
{% endfor %}
Odpovězeno 17/12/2013 v 21:58
zdroj uživatelem

hlasů
0

S ModelFormFieldsinu SqlAlchemypři použití WTForms, pokud máte vnořené objekt uvnitř objektu (cizí klíč vztahy), tady je, jak ukazují příslušné chyby pro pole správně.

Python strana:

def flash_errors(form):
    for field, errors in form.errors.items():
        if type(form[field]) == ModelFormField:
            for error, lines in errors.iteritems():
                description = "\n".join(lines)
                flash(u"Error in the %s field - %s" % (
                    #getattr(form, field).label.text + " " + error,
                    form[field][error].label.text,
                    description
                ))
        else:
            for error, lines in errors.iteritems():
                description = "\n".join(lines)
                flash(u"Error in the %s field - %s" % (
                    #getattr(form, field).label.text + " " + error,
                    form[field].label.text,
                    description
                ))

Jinja strana:

  {% with messages = get_flashed_messages(with_categories=true) %}
    {% for message in messages %}
      {% if "Error" not in message[1]: %}
        <div class="alert alert-info">
          <strong>Success! </strong> {{ message[1] }}
        </div>
      {% endif %}

      {% if "Error" in message[1]: %}
        <div class="alert alert-warning">
         {{ message[1] }}
        </div>
      {% endif %}
    {% endfor %}
  {% endwith %}

Naděje, která pomáhá.

Odpovězeno 06/09/2018 v 20:55
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more