В настоящее время я пытаюсь создать небольшое приложение для фляги на python, которое принимает CSV через панд и разбивает результаты на страницы.Я уже закончил процесс импорта набора данных с пандами, преобразования его в список словарей и разбивки результатов на таблицы с использованием flask_paginate.
Теперь я хотел бы расширить этот код, чтобы разрешить, например, запрос терминов в наборе данных (показать и разбить на страницы все результаты, где «Имя клиента» содержит «Барри»).Я осознаю, что мне нужно использовать поле ввода и обрабатывать пост-запрос, но я очень не уверен, как соединить все это вместе в индексном маршруте.
Любая помощь будет принята с благодарностью.
Код для app.py
from flask import Flask, render_template
from flask_paginate import Pagination, get_page_args
import pandas
app = Flask(__name__)
app.debug = True
df = pandas.read_csv('static/superstore.csv')
data = df.to_dict(orient = 'records')
def get_users(offset=0, per_page=20):
return data[offset: offset + per_page]
@app.route('/')
def index():
page, per_page, offset = get_page_args(page_parameter='page', per_page_parameter='per_page')
total = len(data)
pagination_users = get_users(offset=offset, per_page=per_page)
pagination = Pagination(page=page,
per_page=per_page,
total=total,
css_framework='bootstrap4')
return render_template('index.html',
data=pagination_users,
page=page,
per_page=per_page,
pagination=pagination)
Код для index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>flask-bootstrap example</title>
<!-- Bootstrap -->
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="static/main.css">
</head>
<body>
<div class = "bg-primary">
<div class = "container jumbotron jumbotron-fluid bg-transparent text-white">
<h1 class = "display-4">Pagination Example</h1>
</div>
</div>
<div class="container">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>Order ID</th>
<th>Order Date</th>
<th>Profit</th>
<th>Unit Price</th>
<th>Order Quantity</th>
<th>Customer Name</th>
<th>Region</th>
</tr>
</thead>
<tbody>
{% for item in data %}
<tr>
<td>{{ item['Order ID'] }}</td>
<td>{{ item['Order Date'] }}</td>
{%if item['Profit'] > 0%}
<td><span class ="badge badge-success">{{ item['Profit'] }}</span></td>
{%else%}
<td><span class ="badge badge-danger">{{ item['Profit'] }}</span></td>
{%endif%}
<td>{{ item['Unit Price'] }}</td>
<td>{{ item['Order Quantity'] }}</td>
<td>{{ item['Customer Name'] }}</td>
<td>{{ item['Region'] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{{ pagination.links }}
</div>
</body>
</html>
Снимок экрана: Снимок экрана localhost: 5000 /