【发布时间】:2021-01-08 01:50:25
【问题描述】:
我正在尝试在我的 Flask 网站的每个页面上实现 WTForms 搜索功能。我想避免为每个 Python 函数创建表单。
目前,我为每个函数生成QuickSearchForm() 并将其传递到每个页面。但是,我更愿意定义一次,然后自动加载到每个网页上。
WTForms 可以做到这一点吗?
这是当前 Python 代码的 sn-p:
...
class QuickSearchForm(FlaskForm):
name = StringField(
render_kw={"placeholder": "Quick Search"}
)
...
@bp.route('/')
def home():
quicksearch = QuickSearchForm()
return render_template('index.html', quicksearch=quicksearch)
@bp.route('/content')
def content():
quicksearch = QuickSearchForm()
return render_template('content.html', quicksearch=quicksearch)
@bp.route('/quick_search', methods=('GET', 'POST'))
def quick_search():
quicksearch = QuickSearchForm()
if request.method == 'POST':
return render_template('results.html', results=results, quicksearch=quicksearch)
return render_template('home.html', quicksearch=quicksearch)
以及表单的 HTML:
<form method="POST" action="{{ url_for('home.quick_search') }}">
<fieldset class="form-field">
{{ quicksearch.name }}
{% if quicksearch.name.errors %}
<ul class="errors">
{% for error in quicksearch.name.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</fieldset>
{{ quicksearch.hidden_tag() }}
</form>
我宁愿在__init__ 中定义quicksearch 并完成。
【问题讨论】:
标签: python html flask flask-wtforms wtforms