Grooveshop Django API
Обзор
Этот проект предоставляет надежный автономный API с использованием Django и Django REST Framework с поддержкой как синхронных, так и асинхронных сред, обеспечиваемых Uvicorn (ASGI) и Gunicorn (WSGI) соответственно. Он использует Django Allauth для аутентификации, использует Celery с Redis для управления задачами и использует Postgres для хранения данных. Возможности включают кэширование, многоязычную поддержку и всестороннее тестирование. API также включает встроенную панель администратора Django для эффективных административных операций.
Структура проекта
Приложения Django в рамках этого проекта включают:
- Ядро : основные функции и общие утилиты.
- Пользователь : управление пользователями и аутентификация.
- Продукт : Управление каталогом продукции.
- Заказ : Обработка и управление заказами.
- Поиск : Возможности расширенного поиска.
- Слайдер : динамические ползунки пользовательского интерфейса для рекламных акций и основных моментов.
- Блог : Управление контентом для сообщений в блоге.
- SEO : инструменты и настройки SEO.
- Совет : разделы советов и рекомендаций для пользователей.
- НДС : расчет и управление НДС.
- Страна : Конфигурации для конкретной страны.
- Регион : региональные данные и настройки.
- Способ оплаты : настройки способа оплаты.
- Сеанс : управление сеансами пользователей.
- Корзина : функции корзины покупок.
- Уведомление : механизмы уведомления пользователей.
- Аутентификация : дополнительные уровни аутентификации.
- Контакт : инструменты управления контактами и связи.
Функции
- Аутентификация и управление пользователями : оптимизированное управление учетными записями пользователей и сеансами.
- Многоязычная поддержка : поддерживает различные языки, повышая удобство использования в глобальном масштабе.
- Расширенный поиск и фильтрация : использует полнотекстовый поиск Postgres для эффективного поиска данных.
- Планирование задач : использует Celery для управления фоновыми задачами.
- Оптимизация производительности : реализует стратегии кэширования для улучшения реагирования API.
- Тестирование : включает комплексные модульные и интеграционные тесты.
- Панель администратора : встроенная панель администратора Django для простого управления.
- Документация по API : хорошо документированный API с использованием Swagger и Redoc.
- Контейнеризация : интеграция Docker для упрощенной настройки и развертывания.
Технологии
- Фреймворки : Django, Django REST Framework.
- Аутентификация : Джанго Аллаут.
- База данных : PostgreSQL.
- Управление задачами : Сельдерей
- Брокер сообщений : Redis
- Настройка сервера : Uvicorn (ASGI), Gunicorn (WSGI)
- Контейнеризация : Докер
Настраивать
Предварительные условия
- Питон 3.13 или выше
- Джанго 5.0 или выше
- PostgreSQL
- Редис
Лицензия
Этот проект имеет открытый исходный код под лицензией MIT. Дополнительные сведения см. в файле ЛИЦЕНЗИИ.
Команды Docker для проектов Django
Использование Docker Compose
Операции с базой данных
- Запустите миграцию БД :
docker compose run backend sh -c "python manage.py makemigrations --noinput"
- Применить миграцию :
docker compose run backend sh -c "python manage.py migrate"
Управление пользователями
- Создать суперпользователя :
docker compose run backend sh -c "python manage.py createsuperuser"
Статические файлы
- Сбор статических файлов :
docker compose run backend sh -c "python manage.py collectstatic --noinput"
Тестирование и покрытие
- Запуск тестов :
docker compose run backend sh -c "python manage.py test tests/"
- Запуск тестов с покрытием (исключая определенные файлы и папки):
docker compose run backend sh -c "coverage run --omit=*/migrations/*,*/management/*,*/manage.py,*/setup.py,*/asgi.py,*/wsgi.py --source='.' manage.py test tests/ && coverage report && coverage html"
- Создание HTML-отчетов о покрытии :
docker compose run backend sh -c "coverage html"
Заполнение данных
- Исходная база данных с поддельными данными :
docker compose run backend sh -c "python manage.py seed_all"
Пользовательские файлы создания Docker
- Запуск с конкретным файлом создания :
docker compose -f <docker-compose-file.yml> up -d --build
Использование Docker Exec
Общие команды
- Выполнить команду в контейнере :
docker exec -it <container_id> <command>
- Запустите конкретную команду оболочки :
docker exec -it <container_id> sh -c "<command>"
Локализация
- Генерация сообщений локали :
docker exec -it <container_id> sh -c "python manage.py makemessages -l <locale>"
docker exec -it <container_id> sh -c "python manage.py makemessages --all --ignore=env"
- Скомпилируйте сообщения локали :
docker exec -it <container_id> sh -c "python manage.py compilemessages --ignore=env"
Дополнительная настройка инструментов разработки
Сельдерей
Запуск служб Celery
- Запустите локальный планировщик тактов Celery, используя планировщик базы данных Django:
celery -A core beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
- Запустите работника Celery :
celery -A core worker -E -l info --pool=solo
- Мониторинг сельдерея с цветком :
celery -A core flower --broker=amqp://guest:guest@localhost:5672// --broker_api=http://guest:guest@localhost:15672/api// --port=5555
Ювикорн
Запуск приложения ASGI
- Запустите Uvicorn для приложений ASGI :
uvicorn asgi:application --port 8000 --workers 4 --log-level debug --reload
Настройка и утилиты для разработки Python
Питон версии 3.13.1
Управление виртуальной средой
- Установите Virtualenv :
pip install virtualenv
- Создать виртуальную среду :
virtualenv <env_name>
- Активируйте виртуальную среду :
- Unix/Linux:
source <env_name>/bin/activate
- Windows:
<env_name>Scriptsactivate
- Деактивировать виртуальную среду :
deactivate
- Требования к установке :
pip install -r requirements.txt
- Установите требования, специфичные для среды :
pip install -r requirements/<env_name>.txt
Команды Джанго
- Установите Django :
pip install django
- Начать новый проект :
django-admin startproject <project_name>
- Запустите новое приложение :
python manage.py startapp <app_name>
- Миграция баз данных и управление ими :
- Выполните миграцию:
python manage.py makemigrations
- Применить миграцию:
python manage.py migrate
- Очистите базу данных:
python manage.py sqlflush
- Заполнение базы данных исходными данными (пример одной фабрики):
python manage.py factory_seed --model="BlogPost" --count="100"
- Заполнение базы данных исходными данными (пример всех фабрик):
python manage.py seed_all --model-counts="Country=10,Product=100"
- Управление пользователями :
- Создайте суперпользователя:
python manage.py createsuperuser
- Управление статическими файлами :
python manage.py collectstatic
- Тестирование и отладка :
- Запуск тестов:
python manage.py test
- Доступ к оболочке Django:
python manage.py shell
- Расширенная оболочка:
python manage.py shell_plus
- Оболочка базы данных:
python manage.py dbshell
- Запустите сервер разработки :
python manage.py runserver
Форматирование кода и линтинг
- Перейдите в исходный каталог :
cd src
- Предварительная фиксация и черное форматирование :
- Установите хуки предварительной фиксации:
pre-commit install
- Запустите перехватчики перед фиксацией:
pre-commit run --all-files
- Код формата с черным:
black .
Поэзия для управления зависимостями
- Установите Poetry : Unix/Linux:
curl -sSL https://install.python-poetry.org | python3 -
Windows: (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
- Управление проектами и зависимостями :
- Создайте новый проект:
poetry new <project_name>
- Установить зависимости:
poetry install
- Добавьте или удалите зависимость:
poetry add <dependency_name>
и poetry remove <dependency_name>
- Обновите конкретный файл зависимости или блокировки:
poetry update <dependency_name>
и poetry lock
- Запустите скрипт:
poetry run <script_name>
- Войдите в оболочку виртуальной среды:
poetry shell
Как автоматически обновить файл require.txt
- Использование pip-upgrader :
- Запустите pip-upgrader :
pip-upgrade
Клубничный GraphQL
- Установите Strawberry :
pip install strawberry-graphql
- Запустите Strawberry Server :
strawberry server
- Запустить со схемой проекта :
strawberry server core.graphql.schema:schema
Django REST Framework — зрелищно
- Создайте схему API :
python manage.py spectacular --color --file schema.yml
Использование команд Git
Управление тегами
Удаление тегов
Удалить удаленные теги :
- Удалите все удаленные теги:
git tag -l | xargs -n 1 git push --delete origin
Удалить локальные теги :
- Удалите все локальные теги:
git tag -l | xargs git tag -d