WTForms: Como renderizar um widget HTML5?
Aug 24 2020
Estou tentando usar o campo de entrada de cores WTForms.
É assim que defino o formulário:
from wtforms.widgets.html5 import ColorInput
class ColoursForm(Form):
background_color = ColorInput()
Esta é a visão:
@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))
No meu modelo Jinja2 (colours_edit.html), faço o seguinte:
<p> {{ form.background_color }} Pick a color here </p>
No entanto, ele não renderiza um seletor de cores HTML conforme o esperado, em vez disso, vejo isso no HTML renderizado:
<objeto wtforms.widgets.html5.ColorInput em 0x10b836e90> Escolha uma cor aqui
Por que a entrada não está sendo renderizada?
Respostas
1 caspii Aug 25 2020 at 01:32
Eu resolvi isso. Houve 2 problemas com meu código:
Eu estava faltando () aqui:
<p> {{ form.background_color() }} Pick a color here </p>
O formulário deve ser assim:
class ColoursForm(Form):
"""Used when editing scoreboard colours"""
background_color = StringField(widget=ColorInput())
A partir desta resposta Stackoverflow .
Por fim, devo dizer que a documentação do WTForms não é muito boa nisso. Alguns exemplos certamente ajudariam.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino