【问题标题】:How to implement a next button in flask?如何在烧瓶中实现下一个按钮?
【发布时间】: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"...)

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

【问题讨论】:

标签: python flask next


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    相关资源
    最近更新 更多