javascript - 使用 Flask 时,分页时记住参数的最佳方法是什么?

标签 javascript python flask query-string

假设我有一个包含多个过滤器的结果页面。过滤器作为 URL 参数传递到 Flask。但一旦我按下一页,这就会被忘记。当您从一个页面转到另一个页面时,保留这些参数的最佳方法是什么?

我确信存在 javascript 框架可以做到这一点,但我不想使用 javascript 框架。

最佳答案

假设您正在渲染 HTML 而不是 JSON(看起来您来自标记),为什么不直接将请求中的过滤器查询参数添加到渲染的页面中呢?

例如,像这样:

Python:

@app.route('/search')
def search():
    page_no = request.args.get('page_no')
    color = request.args.get('color')
    brand = request.args.get('brand')
    # TODO: Generate your results here..
    return render_template('results.html', results=results, page_no=page_no, brand=brand color=color)

模板:

<a href="{{ url_for('search', page_no=str(page_no - 1), brand=brand, color=color) }}">Prev</a>
<a href="{{ url_for('search', page_no=str(page_no + 1), brand=brand, color=color) }}">Next</a>

这是一个最小的例子。您还需要处理特殊情况,例如不在第一页上呈现“上一个”链接。可能还对输入参数进行一些验证。但它演示了如何维护链接 URL 中的过滤器参数。

根据您有多少个过滤器参数,您还可以考虑将其干燥,如下所示:

Python:

FILTER_PARAM_NAMES = ['keyword', 'date', 'foo', 'bar']
# ...
def search():
    filter_params = {f: request.args.get(f) for f in FILTER_PARAM_NAMES}
    # ...
    return render_template('results.html', results=results, **filter_params)

模板:

url_for('search', page_no=page_no, **filter_params)

关于javascript - 使用 Flask 时,分页时记住参数的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38417040/

相关文章:

javascript - Windows 更新 2846071 是否中断了 window.event.clientX clientY 的处理?

javascript - 搜索和替换并记住字符串在正则表达式中被替换为哪个单词

python - Django 从表单上传文件无法验证

python - Flask 如何为 select 标签 HTML 指定默认值

javascript - Materialise material_select is not a function 错误

javascript - 如果 NightwatchJS 中不存在元素,如何停止测试而不出错

python - 使用 python 字典保存程序统计信息的干净方法

python - os.environ.get() 为 Heroku 环境变量返回 None

python - Flask:不要重定向到 URL

python - 转移到新计算机后,在虚拟环境中找不到 Flask 扩展