想用 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 给我带来了很多困扰,但无法解决这个问题。他为我提供了数千种代码变体,但没有一个能按预期工作。
flask 模板的
{% for %}
块将按原样迭代 data
中的每个项目(由 get_hidden_interests 返回),因此您的任务是准备正确的数据。从 total_items
和 total_pages
的含义来看,您可能错误地将整个数据库传递给它,而不是只传递了所需的页面。并且 get_hidden_interests
接受 page
和 per_page
感觉应该可以完成这项工作,所以那里可能会有错误。