Blog App — это веб-приложение на Django для создания, управления и просмотра блог-постов с аутентификацией через JWT-токены.
- Создание постов: авторизированные пользователи могут добавлять и редактировать свои посты.
- Чтение постов: все пользователи могут просматривать посты.
- Авторизация через JWT: безопасная авторизация с использованием Access и Refresh токенов (Algorithm RS256).
- Backend: Django, Django REST Framework
- Аутентификация: JWT (с использованием
djangorestframework-simplejwt
) - База данных: PostgreSQL (или SQLite для локальной разработки)
- Кэширование: Django Cache (опционально, для оптимизации производительности)
git clone https://github.com/RustamovAkrom/Blog-2.git
cd Blog-2
Создайте и активируйте виртуальное окружение:
python -m venv venv
source venv/bin/activate # для Linux/macOS
venv\Scripts\activate # для Windows
Установите необходимые зависимости:
pip install -r requirements.txt
Создайте файл .env
в корне проекта и добавьте туда настройки для базы данных и JWT. Пример:
#!/bin/bash
SECRET_KEY=<your django secret key>
DEBUG=True # default
ALLOWED_HOSTS=localhost,127.0.0.1 # default
# `core.settings.development` or `core.setting.production`
DJANGO_SETTINGS_MODULE=core.settings.development # default
PRIVATE_KEY_PATH=security_settings/private_key.pem # default
PUBLIC_KEY_PATH=security_settings/public_key.pem # default
DATABASE_ENVIRON=sqlite # sqlite or postgres
# PostgreSQL configruations
DATABASE_NAME=<your database name>
DATABASE_USER=<your database user>
DATABASE_PASSWORD=<your database password>
DATABASE_HOST=localhost # default
DATABASE_PORT=5432 # default
ADMIN_USERNAME=admin # default
ADMIN_PASSWORD=password # default
ADMIN_EMAIL=admin@example.com # default
Примените миграции и создайте суперпользователя для доступа к админ-панели:
python manage.py migrate
python manage.py createadmin
Запустите сервер разработки:
python manage.py runserver
Теперь ваше приложение доступно по адресу: http://127.0.0.1:8000
Blog App использует JWT для аутентификации. При входе в систему клиент получает два токена:
- Access Token — для доступа к защищённым маршрутам.
- Refresh Token — для обновления Access Token.
-
Получите Access и Refresh токены с помощью
/api/token/
. -
Используйте Access Token для доступа к защищённым эндпоинтам, добавляя его в заголовок запросов:
Authorization: Bearer <access_token>
-
Когда Access Token истекает, обновите его с помощью
/api/token/refresh/
, отправляя Refresh Token в теле запроса.
- apps/users: Приложение для управления пользователями и аутентификацией.
- apps/posts: Приложение для создания, редактирования и удаления блог-постов.
- middleware: JWT Middleware для авторизации с использованием токенов.
- settings: Файл настроек Django, включая конфигурацию базы данных и кэширования.
Для ускорения работы Blog App можно использовать кэширование JWT-токенов. Этот механизм позволяет кэшировать данные пользователей для быстрого доступа без необходимости каждый раз проверять токен.
Этот проект лицензирован на условиях MIT License.