Мне нравится, как Django выполняет проверку формы. Однако я хочу переопределить способ отображения ошибок. Я хочу отправить ошибки проверки формы на верхнюю часть моей веб-страницы (на конкретный тег div) вместо того, чтобы позволить Django отображать ошибки рядом с полями формы, которые являются недопустимыми. Какие-либо предложения?Как изменить способ отображения сообщений об ошибках Django во время проверки?
ответ
Вы можете легко сделать это, просто указав {{ form.errors }}
в верхней части шаблона, вместо того, чтобы ставить {{ field.errors }}
на каждом уровне поля.
Я подозреваю вас в вашем вопросе, хотя вы просто используете тег {{ form.as_p }}
или один из его братьев, чтобы вывести всю форму за один раз. Не делайте этого, если вы хотите настроить отображение вообще. Непросто заменить его простым циклом, чтобы пройти через каждое поле и отобразить его label_tag
и само поле, и вы очень сильно выигрываете от повышенного контроля.
Даниил указал вам в правильном направлении. Смотрите документацию здесь:
http://docs.djangoproject.com/en/dev/topics/forms/#customizing-the-form-template
«Каждый названный вид поля может быть выведена на основании шаблона с помощью {{form.name резкости}}, который будет производить HTML, необходимый для отображения формы виджета Используя {{form.name-of-field.errors}} отображает список ошибок поля .... "
Я предлагаю вам переопределить метод as_XXX вашей формы, в моем случае я переопределяю as_p:
def html_output(self, normal_row, help_text_html):
"Helper function for outputting HTML"
output = []
for name, field in self.fields.items():
html_class_attr = ''
bf = BoundField(self, field, name)
if bf.is_hidden:
hidden_fields.append(unicode(bf))
else:
css_classes = bf.css_classes()
if css_classes:
html_class_attr = ' class="%s"' % css_classes
if bf.label:
label = conditional_escape(force_unicode(bf.label))
if self.label_suffix:
if label[-1] not in ':?.!':
label += self.label_suffix
label = bf.label_tag(label) or ''
else:
label = ''
if field.help_text:
help_text = help_text_html % force_unicode(field.help_text)
else:
help_text = u''
output.append(normal_row % {
'label': force_unicode(label),
'field': unicode(bf),
'help_text': help_text,
'html_class_attr': html_class_attr
})
return mark_safe(u'\n'.join(output))
def as_p(self):
"Returns this form rendered as HTML <p>s."
return self.html_output(
normal_row = u'<p%(html_class_attr)s>%(label)s %(field)s%(help_text)s</p>',
help_text_html = u' <span class="helptext">%s</span>')
Это немного уродливое. Надеюсь, поможет.
- 1. ValidationSummary для сообщений об ошибках проверки отображения
- 2. Есть ли способ изменить способ отображения сообщений об ошибках?
- 3. Многоразовый способ отображения сообщений об ошибках/результатах
- 4. HAML - как создать форму проверки и отображения сообщений об ошибках?
- 5. значения проверки модели в пользовательских Django сообщений об ошибках формы
- 6. Отображение сообщений об ошибках проверки в Struts2
- 7. Лучший способ отображения сообщений об ошибках вызова ajax?
- 8. Директива для отображения сообщений об ошибках
- 9. Как изменить способ вывода сообщений об ошибках компилятора GHC?
- 10. Лучший способ отображения сообщений об ошибках в методах async
- 11. Изменить цвет шрифта сообщений об ошибках проверки в codeigniter
- 12. отображения сообщений об ошибках с Haml
- 13. Лучший способ отображения сообщений об ошибках в приложении в Angular
- 14. Каков наилучший способ отображения сообщений об ошибках компонента?
- 15. Drupal: настройка сообщений об ошибках проверки
- 16. Хороший способ обработки сообщений об ошибках методов проверки
- 17. Обработка несколько аннотаций проверки сообщений об ошибках
- 18. Логический способ отображения сообщений об отправке сообщений об ошибках с использованием php
- 19. Лучший способ обработки/обработки сообщений об ошибках
- 20. Rails - Редактирование отображения сообщений об ошибках по умолчанию
- 21. Лучший способ обработки сообщений об ошибках
- 22. изменить формат сообщений об ошибках бизонов?
- 23. Перегрузка сообщений об ошибках в формах Django
- 24. Изменение сообщений об ошибках woocommerce
- 25. Группировка сообщений об ошибках JSF
- 26. Удаление повторяющихся сообщений об ошибках из проверки сводки проверки
- 27. Как изменить тему сообщения об ошибках Django?
- 28. Изменить класс сообщений об ошибках формы?
- 29. Переадресация сообщений об ошибках
- 30. Оптимизация сообщений об ошибках
Daniel, большое спасибо - это работает. Однако Django все еще показывает свои сообщения об ошибках, т.е. У меня есть моя верхняя часть моей страницы, и Django все еще показывает ошибки рядом с полями, которые являются недопустимыми. Возможно ли теперь сообщить Django о том, чтобы не отображать ошибки проверки (но все равно генерировать form.errors для меня)? – 2009-08-18 14:57:16
Peter есть две вещи: 1) ошибки, связанные с полями {{field.erorrs}} 2) глобальные ошибки, которые не связаны с полями {{form.errors}} Итак, как только вы подтвердите удаление, удалите все поля. и скопировать их в form.errors. Затем все сообщения об ошибках будут отображаться сверху. –