试图弄清楚如何构建烧瓶页面,但在那里迷路了

问题描述 投票:0回答:1

想用 Flask 练习一下,尝试从元中制作一个隐藏的兴趣提取器。

但是在搜索后找到了所有感兴趣的页面上尝试显示表格时迷路了。

我无法在不同的页面中显示它,所有结果都显示在同一页面上并且非常难以阅读:)

这是一个Python Flask应用程序:

from flask import Flask, request, render_template, redirect, url_for
from meta_hidden_interests_extractor import get_hidden_interests

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    search_key = request.args.get('search_key', '')
    page = int(request.args.get('page', 1))
    per_page = 100

    if request.method == 'POST':
        search_key = request.form['search_key']
        return redirect(url_for('index', search_key=search_key, page=1))

    if not search_key:
        return render_template('index.html', search_key=search_key, page=page, total_pages=0, data=[])

    data = get_hidden_interests(search_key, page, per_page)

    total_items = len(data)
    total_pages = (total_items // per_page) + (1 if total_items % per_page > 0 else 0)

    return render_template('index.html', data=data, search_key=search_key, page=page, total_pages=total_pages)


if __name__ == '__main__':
    app.run(debug=True, port=5100)

这是 HTML 模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Meta Hidden Interests</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='css/styles.css') }}">
</head>
<body>
    <div class="container">
        <h1>Enter Search Key for Meta Hidden Interests</h1>
        <form method="POST">
            <input type="text" name="search_key" placeholder="Enter search key" value="{{ search_key }}" required>
            <button type="submit">Search</button>
        </form>

        {% if data %}
        <div class="table-container">
            <table class="table">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Name</th>
                        <th>Audience</th>
                        <th>Path</th>
                        <th>Topic</th>
                    </tr>
                </thead>
                <tbody>
                    {% for item in data %}
                    <tr>
                        <td>{{ item.id }}</td>
                        <td>{{ item.name }}</td>
                        <td>{{ item.audience }}</td>
                        <td>{{ item.path }}</td>
                        <td>{{ item.topic }}</td>
                    </tr>
                    {% endfor %}
                </tbody>
            </table>
        </div>

        <div class="pagination">
            {% if page > 1 %}
            <a href="?page={{ page - 1 }}&search_key={{ search_key }}"><button>Previous</button></a>
            {% endif %}
            <span>Page {{ page }} of {{ total_pages }}</span>
            {% if page < total_pages %}
            <a href="?page={{ page + 1 }}&search_key={{ search_key }}"><button>Next</button></a>
            {% endif %}
        </div>
        {% else %}
        <p>No data available. Please enter a search key and try again.</p>
        {% endif %}
    </div>
</body>
</html>

我尝试创建分页,但没有成功。以前从未使用过烧瓶。 python 技能也超级低:) 还在学习。 GPT 给我带来了很多困扰,但无法解决这个问题。他为我提供了数千种代码变体,但没有一个能按预期工作。

python flask html-templates
1个回答
0
投票

flask 模板的

{% for %}
块将按原样迭代
data
中的每个项目(由 get_hidden_interests 返回),因此您的任务是准备正确的数据。从
total_items
total_pages
的含义来看,您可能错误地将整个数据库传递给它,而不是只传递了所需的页面。并且
get_hidden_interests
接受
page
per_page
感觉应该可以完成这项工作,所以那里可能会有错误。

© www.soinside.com 2019 - 2024. All rights reserved.