【发布时间】:2016-12-09 00:30:59
【问题描述】:
我正在寻找一种干净的方法来在选择给定的下拉选项时保留 WTFForm QuerySelectField 值。这个想法是根据从 QuerySelectField 下拉列表中选择的给定技术过滤项目列表。我采用的方法是向 /projects 发送一个获取请求,其中包含一个带有技术 id 的查询字符串,使用下拉菜单上的 on change 事件,即 /projects?id=5。 我的结构如下:
项目形式-
class ProjectForm(ProjectFormBase):
title = StringField('Title', [validators.Length(min=4, max=25), validators.DataRequired()])
technology = QuerySelectField('Technology', query_factory= connect.technology_choices,
get_pk=lambda a: a.id,
get_label=lambda a: a.name, allow_blank=True, blank_text=u'Select a technology...')
项目路线-
@app.route('/projects', methods=['GET', 'POST'])
def projects():
list_of_projects = None
form = ProjectForm(request.form)
technology_id = request.args.get('id')
if technology_id:
list_of_projects = connect.project(technology_id)
if request.method == 'GET':
if list_of_projects:
connect.close_connection()
return render_template("projects.html",
list_of_projects = list_of_projects, form = form)
else:
return render_template("projects.html", form=form)
JS-
$('#technology').on('change', function () {
var technology = $("#technology").value;
window.location.href="/projects?id=" + technology_id;
window.history.pushState('obj', 'newtitle', '/projects');
});
总而言之,我正在寻找选择的下拉菜单值在更改事件之后保持不变。我也对完全不同的方法持开放态度,而不是也传递查询字符串值。
【问题讨论】: