如何将值传递到我的 Flask Form
How can I pass a value into my Flask Form
我是 Flask 新手。我一直在查看各种教程,但我看到的唯一看起来应该有用的东西却没有。
我有一个表格 class:
class CreateKardForm(FlaskForm):
kardTitle = StringField('Title')
contentText = TextAreaField('Content', [InputRequired(message="You must fill in some text.")])
keywords = StringField('Keywords', [InputRequired(message="Please enter at least one keyword. Separate keywords with commas.")])
createDate = DateField('Creation Date')
modifiedDate = DateField('Last Modified Date')
submit = SubmitField('Save')
还有一个 html 文件:
<!DOCTYPE html>
<html lang="en">
{% extends "formbase.html" %}
{% block content %}
<div class="formwrapper>
<h1>Create a New IdxKard</h1>
<form action="" method="post" novalidate>
{{ form.hidden_tag() }}
...
<p>
{{ form.createDate.label }}<br>
{{ form.createDate }}
</p>
<p>
{{ form.modifiedDate.label }}<br>
{{ form.modifiedDate }}
</p>
<p>{{ form.submit() }}</p>
</form>
</html>
{% endblock %}
</html>
还有一条路线:
@app.route('/createKard', methods=['GET', 'POST'])
def createKard():
print('In createKard')
creationDate = datetime.now()
print('creationDate=', creationDate)
form = forms.CreateKardForm()
if form.validate_on_submit():
print('In createKard in main')
title = request.form['kardTitle']
content = request.form['contentText']
keywords = request.form['keywords']
createDate = request.form['createDate']
modifiedDate = request.form['modifiedDate']
# do stuff
return render_template('createKard.html', createDate=creationDate, form=form)
我希望 creationDate 在加载时显示在表单中,但它没有。我怀疑我仍然不清楚到底发生了什么。我认为因为用户还没有点击提交按钮,所以 return 和 render_template 应该显示 HTML 并传入 createDate。当用户点击提交时,validate_on_submit 为真,其余代码为 运行。不过最重要的是,我如何将一个值传递到表单中以便显示它?
在将 CreateKardForm
的实例传递给 render_template
之前,您必须设置它的 createDate.data
:
@app.route('/createKard', methods=['GET', 'POST'])
def createKard():
print('In createKard')
creationDate = datetime.now()
print('creationDate=', creationDate)
form = forms.CreateKardForm()
form.createDate.data = creationDate # pre-populate the form
# ...
return render_template('createKard.html', createDate=creationDate, form=form)
结果如下:
我是 Flask 新手。我一直在查看各种教程,但我看到的唯一看起来应该有用的东西却没有。
我有一个表格 class:
class CreateKardForm(FlaskForm):
kardTitle = StringField('Title')
contentText = TextAreaField('Content', [InputRequired(message="You must fill in some text.")])
keywords = StringField('Keywords', [InputRequired(message="Please enter at least one keyword. Separate keywords with commas.")])
createDate = DateField('Creation Date')
modifiedDate = DateField('Last Modified Date')
submit = SubmitField('Save')
还有一个 html 文件:
<!DOCTYPE html>
<html lang="en">
{% extends "formbase.html" %}
{% block content %}
<div class="formwrapper>
<h1>Create a New IdxKard</h1>
<form action="" method="post" novalidate>
{{ form.hidden_tag() }}
...
<p>
{{ form.createDate.label }}<br>
{{ form.createDate }}
</p>
<p>
{{ form.modifiedDate.label }}<br>
{{ form.modifiedDate }}
</p>
<p>{{ form.submit() }}</p>
</form>
</html>
{% endblock %}
</html>
还有一条路线:
@app.route('/createKard', methods=['GET', 'POST'])
def createKard():
print('In createKard')
creationDate = datetime.now()
print('creationDate=', creationDate)
form = forms.CreateKardForm()
if form.validate_on_submit():
print('In createKard in main')
title = request.form['kardTitle']
content = request.form['contentText']
keywords = request.form['keywords']
createDate = request.form['createDate']
modifiedDate = request.form['modifiedDate']
# do stuff
return render_template('createKard.html', createDate=creationDate, form=form)
我希望 creationDate 在加载时显示在表单中,但它没有。我怀疑我仍然不清楚到底发生了什么。我认为因为用户还没有点击提交按钮,所以 return 和 render_template 应该显示 HTML 并传入 createDate。当用户点击提交时,validate_on_submit 为真,其余代码为 运行。不过最重要的是,我如何将一个值传递到表单中以便显示它?
在将 CreateKardForm
的实例传递给 render_template
之前,您必须设置它的 createDate.data
:
@app.route('/createKard', methods=['GET', 'POST'])
def createKard():
print('In createKard')
creationDate = datetime.now()
print('creationDate=', creationDate)
form = forms.CreateKardForm()
form.createDate.data = creationDate # pre-populate the form
# ...
return render_template('createKard.html', createDate=creationDate, form=form)
结果如下: