https://github.com/rustamovakrom/blog-2
✅Django Blog app
https://github.com/rustamovakrom/blog-2
css django html htmx-django javascript jwt-authentication python restframework restframework-simple-jwt rs256 rs256-jwt-deno security seo-optimization session-athentication
Last synced: about 1 year ago
JSON representation
✅Django Blog app
- Host: GitHub
- URL: https://github.com/rustamovakrom/blog-2
- Owner: RustamovAkrom
- License: mit
- Created: 2024-02-13T13:22:32.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-11-21T14:48:09.000Z (over 1 year ago)
- Last Synced: 2025-01-11T10:16:25.635Z (over 1 year ago)
- Topics: css, django, html, htmx-django, javascript, jwt-authentication, python, restframework, restframework-simple-jwt, rs256, rs256-jwt-deno, security, seo-optimization, session-athentication
- Language: Python
- Homepage: https://akromjonblog.pythonanywhere.com/
- Size: 7.56 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README

# Blog App
Blog App — это веб-приложение на Django для создания, управления и просмотра блог-постов с аутентификацией через JWT-токены.
## Основные возможности
- **Создание постов**: авторизированные пользователи могут добавлять и редактировать свои посты.
- **Чтение постов**: все пользователи могут просматривать посты.
- **Авторизация через JWT**: безопасная авторизация с использованием Access и Refresh токенов (Algorithm RS256).
## Стек технологий
- **Backend**: Django, Django REST Framework
- **Аутентификация**: JWT (с использованием `djangorestframework-simplejwt`)
- **База данных**: PostgreSQL (или SQLite для локальной разработки)
- **Кэширование**: Django Cache (опционально, для оптимизации производительности)
## Установка и запуск
### Клонирование репозитория
```bash
git clone https://github.com/RustamovAkrom/Blog-2.git
cd Blog-2
```
### Настройка виртуального окружения
Создайте и активируйте виртуальное окружение:
```bash
python -m venv venv
source venv/bin/activate # для Linux/macOS
venv\Scripts\activate # для Windows
```
### Установка зависимостей
Установите необходимые зависимости:
```bash
pip install -r requirements.txt
```
### Настройка переменных окружения
Создайте файл `.env` в корне проекта и добавьте туда настройки для базы данных и JWT. Пример:
```sh
#!/bin/bash
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=
DATABASE_USER=
DATABASE_PASSWORD=
DATABASE_HOST=localhost # default
DATABASE_PORT=5432 # default
ADMIN_USERNAME=admin # default
ADMIN_PASSWORD=password # default
ADMIN_EMAIL=admin@example.com # default
```
### Применение миграций и создание суперпользователя
Примените миграции и создайте суперпользователя для доступа к админ-панели:
```bash
python manage.py migrate
python manage.py createadmin
```
### Запуск сервера
Запустите сервер разработки:
```bash
python manage.py runserver
```
Теперь ваше приложение доступно по адресу: `http://127.0.0.1:8000`
## Аутентификация через JWT
Blog App использует JWT для аутентификации. При входе в систему клиент получает два токена:
- **Access Token** — для доступа к защищённым маршрутам.
- **Refresh Token** — для обновления Access Token.
### Пример использования JWT
1. Получите Access и Refresh токены с помощью `/api/token/`.
2. Используйте Access Token для доступа к защищённым эндпоинтам, добавляя его в заголовок запросов:
```http
Authorization: Bearer
```
3. Когда Access Token истекает, обновите его с помощью `/api/token/refresh/`, отправляя Refresh Token в теле запроса.
## Структура проекта
- **apps/users**: Приложение для управления пользователями и аутентификацией.
- **apps/posts**: Приложение для создания, редактирования и удаления блог-постов.
- **middleware**: JWT Middleware для авторизации с использованием токенов.
- **settings**: Файл настроек Django, включая конфигурацию базы данных и кэширования.
## Кэширование
Для ускорения работы Blog App можно использовать кэширование JWT-токенов. Этот механизм позволяет кэшировать данные пользователей для быстрого доступа без необходимости каждый раз проверять токен.
## Лицензия
Этот проект лицензирован на условиях **MIT License**.
## Documentations: https://rustamovakrom.github.io/Blog-2/