51 lines
1.8 KiB
Markdown
51 lines
1.8 KiB
Markdown
# Flask CRUD Example
|
|
|
|
CRUD-интерфейс на Flask + PostgreSQL. Аналог Lucee CRUD (`tfluceecrud`), работает с той же таблицей.
|
|
|
|
## Переменные окружения
|
|
|
|
| Переменная | По умолчанию | Назначение |
|
|
|-------------|---------------|---------------------------|
|
|
| `PGHOST` | `127.0.0.1` | Хост PostgreSQL |
|
|
| `PGPORT` | `5432` | Порт PostgreSQL |
|
|
| `PGDATABASE`| `postgres` | Имя БД |
|
|
| `PGUSER` | `postgres` | Пользователь |
|
|
| `PGPASSWORD`| (пусто) | Пароль |
|
|
| `TABLE_NAME`| `crud_items` | Имя таблицы (та же что у Lucee) |
|
|
| `PORT` | `5000` | Порт веб-сервера |
|
|
|
|
## Запуск
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
python app.py
|
|
```
|
|
|
|
Или через gunicorn:
|
|
|
|
```bash
|
|
gunicorn app:app -b 0.0.0.0:5000
|
|
```
|
|
|
|
При старте: `CREATE TABLE IF NOT EXISTS` — **не дропает** существующую таблицу.
|
|
|
|
## Структура
|
|
|
|
```
|
|
.
|
|
├── app.py # Flask приложение
|
|
├── requirements.txt # Flask, psycopg2-binary, gunicorn
|
|
├── static/
|
|
│ ├── logo.svg # Nubes логотип
|
|
│ ├── favicon.svg # Nudes иконка
|
|
│ └── style.css # Nubes дизайн-система
|
|
└── templates/
|
|
└── index.html # Jinja2 шаблон
|
|
```
|
|
|
|
## Безопасность
|
|
|
|
- Параметризованные запросы (`%s`) → защита от SQL-инъекций
|
|
- `redirect` после POST → защита от повторной отправки
|
|
- Jinja2 автоэкранирование → XSS-защита
|