Управляйте отображением ошибок формы при использовании {{form.as_ul}} в шаблонах Django. - PullRequest
1 голос
/ 21 декабря 2011

Мне нравится удобный метод вывода формы {{ form.as_ul }}, но есть ли способ, которым я все еще могу продолжать использовать его, но фиксировать все ошибки заранее вместо отображения ошибки чуть выше каждого поля.

Я понимаю, чтоесть способы перебрать каждый элемент формы и так далее, как упомянуто в django docs , но я хочу продолжать использовать возможность form.as_ul(), кроме получения контроля над отображением ошибок.

Ответы [ 3 ]

3 голосов
/ 22 декабря 2011

Решил эту проблему с помощью Повторно используемые шаблоны форм .

Это просто ...

  1. Создайте шаблон многократного использования со следующими фрагментами кода в зависимости от ваших потребностей.

  2. Если вы хотите отобразить все ошибки в верхней части формы ...

    {% if form %}
        {% if form.errors %}
             {% for field in form %}
                  {{field.errors}}
             {% endfor %}
        {% endif %}
        {% for field in form %}
             <li>{{ field.label_tag }}: {{ field }}</li>
        {% endfor %}
    {% endif %}
    
  3. Если вы хотите отображать все ошибки сразу после каждого поля формы без HTML-элементов по умолчанию вокруг ошибки, используйте ...

    {% for field in form %}
        {{ field.label_tag }}: {{ field }}
        {% for error in field.errors %}{{ error }}{% endfor %}
    {% endfor %}
    
  4. Использовал второй шаблон и создал тег включения

1 голос
/ 21 декабря 2011

Единственный способ, которым я вижу, - это наследовать новый класс формы от forms.Form и изменять метод as_ul, как вам нравится.Что не очень хорошо, если вы собираетесь использовать сторонние формы, такие как форма для входа и т. Д. (У них не будет такого метода).

Я думаю, что лучшее решение - это создать собственную тег включения и отображение формы с ним.Он будет настолько коротким, как as_ul ({% render_form form %}), но очень гибким, он будет работать со всеми формами и не будет смешивать код HTML и Python.

0 голосов
/ 21 декабря 2011

Я все еще думаю, что настройка для визуализации формы в шаблонах довольно гибкая.Я обычно делаю это для своих веб-приложений.Вы можете работать с небольшим количеством javascript и css, но это не большая проблема.Более того, я думаю, что мы должны попытаться сделать приложение простым.

...