我正在尝试使用WTForms颜色输入字段。
如何为输入字段设置默认值(例如#ff0000
)?
这是我定义表单的方式:
from wtforms.widgets.html5 import ColorInput
class ColoursForm(Form):
background_color = StringField(widget=ColorInput())
这是视图:
@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))
在我的Jinja2模板(colours_edit.html)中,我这样做:
<p> {{ form.background_color() }} Pick a color here </p>
一切正常,但是我不知道如何设置默认值。 不起作用的形式是:
background_color = StringField(widget=ColorInput(), default="#ff00ff")
答案 0 :(得分:2)
执行此操作的一种方法是检查,然后在视图中设置数据值。获得表格后,请注意两行:
@app.route("/colours/<token>/", methods=['GET', 'POST'])
def edit_colours(token):
form = ColoursForm(request.form)
if not form.background_color.data:
form.background_color.data = "#ff00ff"
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))
没有默认值:
默认#ff00ff
:
这是一个好奇的人尝试的最小示例:
from flask import Flask, request, render_template
from wtforms.widgets.html5 import ColorInput
from wtforms import Form, StringField
class ColoursForm(Form):
background_color = StringField(widget=ColorInput())
app = Flask(__name__)
@app.route("/")
def edit_colours():
form = ColoursForm()
if not form.background_color.data:
form.background_color.data = "#ff00ff"
if request.method == "GET":
return render_template("colors_edit.html", form=form)
colors_edit.html
与OP相同(请确保将其放在templates
文件夹中):
<p> {{ form.background_color() }} Pick a color here </p>
我不知道您为什么第一次尝试设置默认值不起作用。也没有为我工作。似乎应该。 This的答案会更深入。