首页 > 解决方案 > 如何在烧瓶中实现下一个按钮?

问题描述

我正在尝试使用 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"...)

任何有关如何实现下一个按钮的建议将不胜感激,谢谢!

标签: pythonflasknext

解决方案


这是一个旧帖子,但让我试一试。您是否尝试对结果进行分页?在你的 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 %}


推荐阅读