gpt4 book ai didi

python - 记住分页的表单数据

转载 作者:太空狗 更新时间:2023-10-29 23:55:23 24 4
gpt4 key购买 nike

在我的 Flask 应用程序中,我有一个 View ,它使用 Flask-SQLAlchemy 分页方法呈现一个项目表。到目前为止很棒的东西。但是我想添加排序和过滤,所以我创建了一个带有选择框的表单,用户可以在其中选择排序和过滤选项。

在页面上提交排序/过滤器时, View 工作正常:第一页已排序。但是在页面上选择另一个页面,分页正在回退到原始查询。我应该怎么做才能在新页面加载期间保存我的排序/筛选选项?我想到了使用 flask.g,但这是正确的方法吗?

class ItemTableForm(Form):
sort_choices = [('id', 'ID'),
('name', 'Name'),
('status', 'Status')]
filter_choices = [('all', 'All'),
('instock', 'In stock'),
('sold', 'Sold')]
sort = SelectField(u'Sort by', choices=sort_choices)
filter = SelectField(u'Filter by', choices=filter_choices)

@app.route('/browse/<int:page>', methods=("GET", "POST"))
def browse(page):
form = ItemTableForm()
if form.validate_on_submit():
query = Item.query.order_by(getattr(Item, form.sort.data))
else:
query = Item.query

pagination = paginate(query, page)
return render_template('browse.html', pagination=pagination, form=form)

# My template contains this form and a regular HTML table
<form action="{{ url_for('browse') }}" method="POST">
{{ form.hidden_tag() }}
{{ form.sort.label }} {{ form.sort() }}
{{ form.filter.label }} {{ form.filter() }}
<button type="submit" class="btn">Submit</button>
</form>

最佳答案

您可以使用 url 参数传递有关排序的信息。假设用户选择按名称排序。然后在url末尾添加这个

    your_url?sort=name

然后你可以访问它

    value = request.args.get('name','')

只需将排序变量值传递给您将排序值附加到下一个 url 的模板。

编辑:

要在 Flask 中创建这样的 url,请执行以下操作:

    url_for('url_view_name', sort='name')

这将返回附加了排序作为查询参数的 url。查看 flask 文档 here了解更多关于 url 构建的信息

关于python - 记住分页的表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12202852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com