Простой блог на Flask с возможностью создания, редактирования и удаления постов, а также добавления комментариев.
- 📝 Главная страница со списком всех постов
- 📄 Страница просмотра полного текста статьи
- 💬 Отображение полного списка комментариев к статье
- ✏️ Форма для создания новой статьи
- ➕ Форма для добавления комментариев к статье
- 🔄 Редактирование существующей статьи
- ❌ Удаление существующей статьи
- 👥 Возможность указания имени автора для статей и комментариев
- ↩️ Возможность ответа на существующие комментарии (вложенные комментарии)
- Python 3
- Flask
- SQLite (через sqlite3)
- Jinja2
- HTML/CSS (Bootstrap)
-
Клонируйте репозиторий:
git clone https://github.com/ваш-username/flask-blog.git cd flask-blog
-
Установите зависимости:
pip install -r requirements.txt
-
Инициализируйте базу данных:
python db.py
-
Запустите приложение:
python app.py
-
Откройте в браузере:
http://localhost:5000
.
├── app.py # Основное Flask-приложение
├── db.py # Работа с базой данных
├── blog.db # Файл базы данных SQLite
├── requirements.txt # Зависимости
└── templates # Шаблоны Jinja2
├── base.html # Базовый шаблон
├── create_post.html # Форма создания поста
├── edit_post.html # Форма редактирования поста
├── index.html # Главная страница
└── post.html # Страница поста с комментариями
Для деплоя на хостинг (например, Heroku):
-
Установите Heroku CLI и войдите в систему:
heroku login
-
Создайте новое приложение:
heroku create your-app-name
-
Добавьте файл
Procfile
с содержимым:web: gunicorn app:app
-
Установите gunicorn:
pip install gunicorn
-
Закоммитьте изменения и запушите на Heroku:
git add . git commit -m "Prepare for deployment" git push heroku master
-
Откройте приложение:
heroku open
Для использования PostgreSQL вместо SQLite:
-
Установите psycopg2:
pip install psycopg2-binary
-
Измените
get_db_connection()
вdb.py
:def get_db_connection(): conn = psycopg2.connect( host="your-host", database="your-db", user="your-user", password="your-password" ) return conn
-
Обновите SQL-запросы в соответствии с синтаксисом PostgreSQL (замените
?
на%s
).