WTForms:如何为 HTML5 小部件设置默认值?
WTForms: how do I set a default value for an HTML5 Widget?
我正在尝试使用 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")
执行此操作的一种方法是检查然后在您的视图中设置数据值。请注意获取表单后的两条新行:
@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 答案深入一点。
我正在尝试使用 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")
执行此操作的一种方法是检查然后在您的视图中设置数据值。请注意获取表单后的两条新行:
@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 答案深入一点。