@Atroshchenko-Dima
Python, postgres

Как в web интерфейсе добавить выборку по датам из таблицы?

Добрый день! Создал 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>
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Конечно есть и книги и курсы. Подавляющее большинство всех сайтов, точно более 90% - это и есть интерфейсы к БД с дизайнерскими изысками.

Загуглите для начала "python web crud example", потом приходте с более конкретными вопросами.

Пользователь должен вбивать в ячейках начальную и конечную дату

читайте что такое html form

данные должны выгружаться именно в этом диапазоне

Добавляйте в запрос условие
SELECT * FROM toplivo
WHERE
	payment_date BETWEEN '2007-02-07' AND '2007-02-15';
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы