【发布时间】:2023-03-25 18:20:02
【问题描述】:
我正在尝试使用 Flask 来实现对数据库的基本查询。每页最多显示 8 个结果,如果超过 8 个,则应该有一个下一页按钮。除了下一页按钮外,一切都按预期工作,但我不确定我做错了什么。
这是我的 Python 代码:
@app.route("/results", methods=["POST"])
def results(result = None):
"""
result page
:return:
"""
query_text = request.form["query"] # Get the raw user query from home page
#~results processing code removed as it's not relevant
hasnext = False
if len(r)>1:
hasnext=True
return render_template("results.html", query=query_text, hits=h , result=r[0], page=1, start = 1, hasnext = hasnext) # add variables as you wish
@app.route("/results/<int:page_id>", methods=["POST"])
def next_page(page_id):
"""
"next page" to show more results
:param page_id:
:return:
"""
s = (page_id-1)*8+1 #numbering of results
next = False
if len(r) >= page_id:
next = True
return render_template("results.html", query=query_text, hits=h, result=r[page_id-1], page=page_id, start = s, hasnext = next)
然后这是我尝试为不起作用的按钮实现 HTML 的两种方法: 这个不起作用(即使我将变量 {{page_id}} 更改为硬编码数字)
<a href="{{ url_for('next_page', page_id={{page_id}}+1)}} ">Next
<span class="a-letter-space"></span>
<span class="a-letter-space"></span>
</a>
这个显示了按钮,当我尝试这段代码时,我还在 Python 中添加了更多内容: 按钮:
{% if hasnext %}
<form method ="POST" action="/">
<input type="submit" name="Next" value="Next"/>
{% endif %}
</form>
添加到 Python:
if request.method == 'POST':
if request.form.get('Next') == 'Next':
return render_template("results.html"...)
任何关于如何实现下一个按钮的建议将不胜感激,谢谢!
【问题讨论】:
-
您熟悉flask sqlalchemy 中的pagination 吗? This 是一个小教程。我认为这样可以让您的工作更轻松。