python - 如何在烧瓶中实现下一个按钮?
问题描述
我正在尝试使用 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"...)
任何有关如何实现下一个按钮的建议将不胜感激,谢谢!
解决方案
这是一个旧帖子,但让我试一试。您是否尝试对结果进行分页?在你的 python 文件中试试这个。
@app.route("/results")
def results():
page = request.args.get('page', 1, type=int)
query_text = Text.query.paginate(page=page,per_page=5)
return render_template('result.html', query_text =query_text)
然后在您的 results.html 中在 {% endblock content %} 之前插入此代码:
{% for page_num in query_text.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}
{% if page_num %}
{% if query_text.page == page_num %}
<a class="btn btn-info mb-4" href="{{ url_for('results', page=page_num) }}">{{ page_num }}</a>
{% else %}
<a class="btn btn-outline-info mb-4" href="{{ url_for('results', page=page_num) }}">{{ page_num }}</a>
{% endif %}
{% else %}
...
{% endif %}
{% endfor %}
推荐阅读
- c++ - 如何允许用户确定模板类型?
- c++ - 包装介绍性标准功能
- android - 如何更改 TextInputLayout 中密码切换的颜色?
- c# - Ninject:使用每个 Get 调用调用一个方法
- javascript - 从输入中获取文件列表
- haxe - 如何将 Haxe Array/Vector 转换为另一种类型
- winapi - WaitForSingleObject() 在未发生等待事件的情况下发出信号
- python - 从 API 中迭代 JSON 以获取第一个 True 数字?py2.7
- javascript - 从 JQUERY/AJAX 到 Morris.JS 的数据
- javascript - 绘图选项在可变半径饼图中不起作用