{# UOFastForms — Jinja2 macros for rendering WTForms forms with Bootstrap 5. Import in any template: {% from 'uofast_forms/form_macros.html' import render_form, render_field, render_mv_fieldlist, render_form_errors %} Macros ------ render_form(form, ...) Full
block with all fields + submit button render_field(field, ...) Single Bootstrap 5 form-group for any scalar field render_mv_fieldlist(field, ...) Repeater UI for MVFieldList fields render_form_errors(form) Bootstrap alert summarising all form errors #} {# ----------------------------------------------------------------------- render_form_errors(form) Renders a dismissable Bootstrap 5 danger alert listing all field errors. Pass the form after validate() has been called. ----------------------------------------------------------------------- #} {% macro render_form_errors(form) %} {% set all_errors = [] %} {% for field in form %} {% if field.errors %} {% for err in field.errors %} {% set label = field.label.text if field.label else field.name %} {% if all_errors.append((label, err)) %}{% endif %} {% endfor %} {% endif %} {% endfor %} {% if all_errors %} {% endif %} {% endmacro %} {# ----------------------------------------------------------------------- render_field(field, label_class, input_class, wrapper_class) Renders a single Bootstrap 5 mb-3 form group for any scalar WTForms field. MV FieldList fields should use render_mv_fieldlist() instead. Args: field WTForms field object label_class CSS class(es) for the