Sto utilizzando la macro render_field presentata sullo Flask-WFT documentation page per eseguire il rendering di campi in forme lunghe su modelli diversi.rendering degli attributi del titolo html con descrizione campo Flask-WTForm
Un campo è definito come questo
year_built = IntegerField(label='Year Built',
description='Year built, not the year of a major renovation.',
validators=[validators.NumberRange(
min=1700,
max=2012,
message="Between %(min)s and %(max)s")])
La macro si presenta così ...
{% macro render_field(field) %}
<dt>{{ field.label }}
<dd>{{ field(**kwargs)|safe }}
{% if field.errors %}
<ul class=errors>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</dd>
{% endmacro %}
Nelle forme stessi i singoli campi vengono inseriti utilizzando ...
{{ render_field(form.year_built, class="input text")}}
Quello che non riesco a capire è un modo di usare la descrizione nell'oggetto campo all'interno della parte della macro crea il campo HTML field(**kwargs)
. So che posso passare le parole chiave alla funzione render_field, ma mi occupo di moduli con più di 100 campi e l'impostazione della descrizione nel forms.py e quindi l'impostazione di nuovo come parola chiave title nel template.html sembra una rigenerazione inutile. Mi piacerebbe molto usare la macro per visualizzare una descrizione come titolo se è lì o semplicemente visualizzare il campo senza un titolo se non lo è.
C'è un modo per aggiungere nuove voci a kwargs
prima dell'esecuzione della funzione field()?
Oh mio ... non mi rendevo conto che il campo() all'interno del modello è diverso da classe Field all'interno del vostro forms.py. In altre parole, posso aggiungere alcuni attributi come "dataforajax" (campo (dataforajax = 'test')) e lo inserisce nell'html. Tuttavia, ho difficoltà ad aggiungere "data-for-ajax", potrei dover eseguire alcune modifiche javascript degli attributi per posizionare i trattini ----. – Dexter