Добрый день! Создал API запрос на выгрузку таблицы из БД postgres в WEB интерфейс + оформление данной таблицы.
Подскажите, пожалуйста, как добавить фильтр по датам?(И вообще, где можно почитать именно по созданию ПО/WEB интерфейса для БД, мб книги/курсы выдео какие-то хорошие по данной теме есть)
Пользователь должен вбивать в ячейках начальную и конечную дату, соответственно, данные должны выгружаться именно в этом диапазоне.
файл app.py
from flask import Flask, render_template
import flask
import psycopg2
app = Flask(__name__)
params = {
"host": "localhost",
"port": 5432,
"user": "postgres",
"password": "postgres",
"database": "postgres"
}
conn = psycopg2.connect(**params)
@app.route("/")
def index():
cur = conn.cursor()
cur.execute("SELECT * FROM toplivo;")
rows = cur.fetchall()
cur.close
return render_template("index.html", rows=rows)
if __name__ == "__main__":
app.run()
файл index.html
<!DOCTYPE html>
<html>
<head>
<title>Топливо</title>
</head>
<body>
<style>
@import url(https://fonts.googleapis.com/css?family=Roboto:400,500,700,300,100);
body {
background-color: #3e94ec;
font-family: "Roboto", helvetica, arial, sans-serif;
font-size: 16px;
font-weight: 400;
text-rendering: optimizeLegibility;
}
div.table-title {
display: block;
margin: auto;
max-width: 600px;
padding:5px;
width: 100%;
}
.table-title h3 {
color: #fafafa;
font-size: 30px;
font-weight: 400;
font-style:normal;
font-family: "Roboto", helvetica, arial, sans-serif;
text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.1);
text-transform:uppercase;
}
/*** Table Styles **/
.table-fill {
background: white;
border-radius:3px;
border-collapse: collapse;
height: 320px;
margin: auto;
max-width: 600px;
padding:5px;
width: 100%;
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
animation: float 5s infinite;
}
th {
color:#D5DDE5;;
background:#1b1e24;
border-bottom:4px solid #9ea7af;
border-right: 1px solid #343a45;
font-size:23px;
font-weight: 100;
padding:24px;
text-align:left;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
vertical-align:middle;
}
th:first-child {
border-top-left-radius:3px;
}
th:last-child {
border-top-right-radius:3px;
border-right:none;
}
tr {
border-top: 1px solid #C1C3D1;
border-bottom: 1px solid #C1C3D1;
color:#666B85;
font-size:16px;
font-weight:normal;
text-shadow: 0 1px 1px rgba(256, 256, 256, 0.1);
}
tr:hover td {
background:#4E5066;
color:#FFFFFF;
border-top: 1px solid #22262e;
}
tr:first-child {
border-top:none;
}
tr:last-child {
border-bottom:none;
}
tr:nth-child(odd) td {
background:#EBEBEB;
}
tr:nth-child(odd):hover td {
background:#4E5066;
}
tr:last-child td:first-child {
border-bottom-left-radius:3px;
}
tr:last-child td:last-child {
border-bottom-right-radius:3px;
}
td {
background:#FFFFFF;
padding:20px;
text-align:left;
vertical-align:middle;
font-weight:300;
font-size:18px;
text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.1);
border-right: 1px solid #C1C3D1;
}
td:last-child {
border-right: 0px;
}
th.text-left {
text-align: left;
}
th.text-center {
text-align: center;
}
th.text-right {
text-align: right;
}
td.text-left {
text-align: left;
}
td.text-center {
text-align: center;
}
td.text-right {
text-align: right;
}
</style>
<table class="table-fill">
<thead>
<tr>
<th align="center">Месяц</th>
<th align="center">Контрагент</th>
<th align="center">Вид обязательств</th>
<th align="center">Договор</th>
<th align="center">Номер счета фактуры</th>
<th align="center">Дата</th>
<th align="center">Станция</th>
<th align="center">k</th>
<th align="center">Количество, тыс.куб.м</th>
<th align="center">Стоимость без НДС, руб.</th>
<th align="center">Цена руб./тыс.м3</th>
<th align="center">Калорийность поставщика</th>
<th align="center">Калорийность электростанции</th>
<th align="center">Количество, тут</th>
<th align="center">Цена руб./тут</th>
<th align="center">Для средневзвеса калорийности поставщика</th>
<th align="center">Для средневзвеса калорийности станции</th>
<th align="center">Скачать договор</th>
</tr>
</thead>
<tbody class="table-hover">
{% for row in rows %}
<tr>
<td align="center">{{ row[0] }}</td>
<td align="center">{{ row[1] }}</td>
<td align="center">{{ row[2] }}</td>
<td align="center">{{ row[3] }}</td>
<td align="center">{{ row[4] }}</td>
<td align="center">{{ row[5] }}</td>
<td align="center">{{ row[6] }}</td>
<td align="center">{{ row[7] }}</td>
<td align="center">{{ row[8] }}</td>
<td align="center">{{ row[9] }}</td>
<td align="center">{{ row[10] }}</td>
<td align="center">{{ row[11] }}</td>
<td align="center">{{ row[12] }}</td>
<td align="center">{{ row[13] }}</td>
<td align="center">{{ row[14] }}</td>
<td align="center">{{ row[15] }}</td>
<td align="center">{{ row[16] }}</td>
<td align="center"><br><button>скачать</button></td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>