API GrooveShop Django
Visão geral
Este projeto oferece uma API headless robusta usando Django e Django REST Framework, com suporte para ambientes síncronos e assíncronos facilitados por Uvicorn (ASGI) e Gunicorn (WSGI), respectivamente. Ele aproveita Django Allauth para autenticação, utiliza Celery com Redis para gerenciamento de tarefas e emprega Postgres para armazenamento de dados. Os recursos incluem cache, suporte multilíngue e cobertura abrangente de testes. A API também inclui um painel de administração Django integrado para operações administrativas eficientes.
Estrutura do Projeto
Os aplicativos Django neste projeto incluem:
- Core : Funcionalidades principais e utilitários compartilhados.
- Usuário : Gerenciamento e autenticação de usuários.
- Produto : Gerenciamento de catálogo de produtos.
- Pedido : Processamento e gerenciamento de pedidos.
- Pesquisa : recursos de pesquisa avançados.
- Controle deslizante : controles deslizantes de UI dinâmicos para promoções e destaques.
- Blog : gerenciamento de conteúdo para postagens de blog.
- SEO : ferramentas e configurações de SEO.
- Dica : seções de dicas e conselhos do usuário.
- IVA : cálculo e gestão do IVA.
- País : configurações específicas do país.
- Região : dados e configurações regionais.
- Forma de pagamento : configurações da forma de pagamento.
- Sessão : gerenciamento de sessão do usuário.
- Carrinho : Funcionalidades do carrinho de compras.
- Notificação : Mecanismos de notificação do usuário.
- Autenticação : Camadas de autenticação adicionais.
- Contato : Ferramentas de gerenciamento e comunicação de contatos.
Características
- Autenticação e gerenciamento de usuários : gerenciamento simplificado de contas de usuário e sessões.
- Suporte multilíngue : Acomoda vários idiomas, melhorando a usabilidade global.
- Pesquisa e filtragem avançadas : aproveita a pesquisa de texto completo do Postgres para recuperação eficiente de dados.
- Agendamento de tarefas : utiliza o Celery para gerenciamento de tarefas em segundo plano.
- Otimização de desempenho : implementa estratégias de cache para melhorar a capacidade de resposta da API.
- Teste : Inclui testes abrangentes de unidade e integração.
- Painel de administração : painel de administração integrado do Django para gerenciamento direto.
- Documentação da API : API bem documentada usando Swagger e Redoc.
- Conteinerização : integração do Docker para configuração e implantação simplificadas.
Tecnologias
- Frameworks : Django, Django REST Framework
- Autenticação : Django Allauth
- Banco de dados : PostgreSQL
- Gerenciamento de tarefas : aipo
- Corretor de mensagens : Redis
- Configuração do servidor : Uvicorn (ASGI), Gunicorn (WSGI)
- Conteinerização : Docker
Configurar
Pré-requisitos
- Python 3.13 ou superior
- Django 5.0 ou superior
- PostgreSQL
- Redis
Licença
Este projeto é de código aberto sob a licença MIT. Consulte o arquivo LICENSE para obter mais detalhes.
Comandos Docker para projetos Django
Usando Docker Compose
Operações de banco de dados
- Execute migrações de banco de dados :
docker compose run backend sh -c "python manage.py makemigrations --noinput"
- Aplicar migrações :
docker compose run backend sh -c "python manage.py migrate"
Gerenciamento de usuários
- Criar superusuário :
docker compose run backend sh -c "python manage.py createsuperuser"
Arquivos estáticos
- Coletar arquivos estáticos :
docker compose run backend sh -c "python manage.py collectstatic --noinput"
Teste e cobertura
- Execute testes :
docker compose run backend sh -c "python manage.py test tests/"
- Execute testes com cobertura (excluindo arquivos e pastas específicos):
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"
- Gere relatórios HTML de cobertura :
docker compose run backend sh -c "coverage html"
Sementeira de dados
- Banco de dados de sementes com dados falsos :
docker compose run backend sh -c "python manage.py seed_all"
Arquivos Docker Compose personalizados
- Execute com arquivo de composição específico :
docker compose -f <docker-compose-file.yml> up -d --build
Usando DockerExec
Comandos Gerais
- Execute o comando no contêiner :
docker exec -it <container_id> <command>
- Execute o comando Shell específico :
docker exec -it <container_id> sh -c "<command>"
Localização
- Gere mensagens de localidade :
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"
- Compilar mensagens de localidade :
docker exec -it <container_id> sh -c "python manage.py compilemessages --ignore=env"
Configuração Adicional para Ferramentas de Desenvolvimento
Salsão
Iniciando serviços de aipo
- Execute um agendador de batida Celery local usando o agendador de banco de dados Django:
celery -A core beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
- Execute um trabalhador do Celery :
celery -A core worker -E -l info --pool=solo
- Monitore o aipo com flor :
celery -A core flower --broker=amqp://guest:guest@localhost:5672// --broker_api=http://guest:guest@localhost:15672/api// --port=5555
Uvicórnio
Executando o aplicativo ASGI
- Inicie o Uvicorn para aplicativos ASGI :
uvicorn asgi:application --port 8000 --workers 4 --log-level debug --reload
Configuração e utilitários de desenvolvimento Python
Versão 3.13.1 do Python
Gestão de Ambiente Virtual
- Instale o Virtualenv :
pip install virtualenv
- Criar ambiente virtual :
virtualenv <env_name>
- Ative o ambiente virtual :
- Unix/Linux:
source <env_name>/bin/activate
- Windows:
<env_name>Scriptsactivate
- Desativar ambiente virtual :
deactivate
- Requisitos de instalação :
pip install -r requirements.txt
- Instale requisitos específicos do ambiente :
pip install -r requirements/<env_name>.txt
Comandos Django
- Instale o Django :
pip install django
- Inicie um novo projeto :
django-admin startproject <project_name>
- Inicie um novo aplicativo :
python manage.py startapp <app_name>
- Migrações e gerenciamento de banco de dados :
- Faça migrações:
python manage.py makemigrations
- Aplicar migrações:
python manage.py migrate
- Limpe o banco de dados:
python manage.py sqlflush
- Preencher o banco de dados com dados iniciais (exemplo de fábrica única):
python manage.py factory_seed --model="BlogPost" --count="100"
- Preencher o banco de dados com dados iniciais (exemplo de todas as fábricas):
python manage.py seed_all --model-counts="Country=10,Product=100"
- Gerenciar usuários :
- Criar superusuário:
python manage.py createsuperuser
- Gerenciar arquivos estáticos :
python manage.py collectstatic
- Teste e depuração :
- Execute testes:
python manage.py test
- Acesse o shell do Django:
python manage.py shell
- Shell aprimorado:
python manage.py shell_plus
- Shell do banco de dados:
python manage.py dbshell
- Execute o servidor de desenvolvimento :
python manage.py runserver
Formatação e Linting de código
- Navegue até o diretório de origem :
cd src
- Pré-confirmação e formatação preta :
- Instale ganchos de pré-commit:
pre-commit install
- Execute ganchos de pré-commit:
pre-commit run --all-files
- Formate o código com Black:
black .
Poesia para gerenciamento de dependências
- Instale Poesia : Unix/Linux:
curl -sSL https://install.python-poetry.org | python3 -
Windows: (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
- Gerenciar projetos e dependências :
- Crie um novo projeto:
poetry new <project_name>
- Instalar dependências:
poetry install
- Adicione ou remova uma dependência:
poetry add <dependency_name>
e poetry remove <dependency_name>
- Atualizar uma dependência específica ou arquivo de bloqueio:
poetry update <dependency_name>
e poetry lock
- Execute um script:
poetry run <script_name>
- Entre no shell do ambiente virtual:
poetry shell
Como atualizar automaticamente os requisitos.txt do pip
- Usando o pip-upgrader :
- Execute pip-upgrader :
pip-upgrade
Morango GraphQL
- Instale o morango :
pip install strawberry-graphql
- Execute o servidor Strawberry :
strawberry server
- Execute com esquema de projeto :
strawberry server core.graphql.schema:schema
Estrutura REST do Django - Espetacular
- Gerar esquema de API :
python manage.py spectacular --color --file schema.yml
Uso do comando Git
Gerenciamento de tags
Excluindo tags
Excluir tags remotas :
- Exclua todas as tags remotas:
git tag -l | xargs -n 1 git push --delete origin
Excluir tags locais :
- Exclua todas as tags locais:
git tag -l | xargs git tag -d