WTForms: Comment rendre un widget HTML5?

Aug 24 2020

J'essaye d'utiliser le champ de saisie de couleur WTForms.

Voici comment je définis la forme:

from wtforms.widgets.html5 import ColorInput

class ColoursForm(Form):
   background_color = ColorInput()

Voici la vue:

@app.route("/colours/<token>/", methods=['GET', 'POST'])
def edit_colours(token):
   form = ColoursForm(request.form)
   if request.method == 'GET':
       return render_template('colours_edit.html', form=form, token=token)
   else:  # Request = post

      return redirect(url_for('view_scoreboard', token=token))

Dans mon modèle Jinja2 (colours_edit.html), je fais ceci:

<p> {{ form.background_color }} Pick a color here </p>

Cependant, il ne rend pas un sélecteur de couleurs HTML comme prévu, mais je vois ceci dans le HTML rendu:

<wtforms.widgets.html5.ColorInput object at 0x10b836e90> Choisissez une couleur ici

Pourquoi l'entrée n'est-elle pas rendue?

Réponses

1 caspii Aug 25 2020 at 01:32

Je l'ai travaillé. Il y a eu 2 problèmes avec mon code:

Il me manquait () ici:

<p> {{ form.background_color() }} Pick a color here </p>

Le formulaire devrait ressembler à ceci:

class ColoursForm(Form):
"""Used when editing scoreboard colours"""
   background_color = StringField(widget=ColorInput())

De cette réponse Stackoverflow .

Enfin, je dois dire que la documentation WTForms n'est pas très bonne à ce sujet. Quelques exemples aideraient certainement.