Skip to content

Instantly share code, notes, and snippets.

@RochaGabriell
Last active June 29, 2024 05:40
Show Gist options
  • Save RochaGabriell/be715c3d2e0e084ec9ef3f0e75d97897 to your computer and use it in GitHub Desktop.
Save RochaGabriell/be715c3d2e0e084ec9ef3f0e75d97897 to your computer and use it in GitHub Desktop.
Estrutura de pastas para Django

Estrutura de Organização de Projeto Django 🏗️

Quando se trata de desenvolvimento web com Django, a organização do seu projeto desempenha um papel crucial para facilitar o desenvolvimento, a manutenção e a colaboração. Aqui está a estrutura de organização do projeto que decidi adotar, inspirada pelo livro "Django 3 Web Development Cookbook Fourth Edition" (Copyright © 2020 Packt Publishing), e por que isso faz sentido para mim.

Diretórios Principais

📂 project_root
├── 📂 .vscode                 # Configurações do Visual Studio Code
│   └── 📄 settings.json
├── 📂 commands                # Armazena scripts e comandos customizados
├── 📂 db_backups              # Armazena backups do banco de dados
│   └── 📄 db.json
├── 📂 myproject               # Diretório principal do projeto Django
│   ├── 📂 apps                # Diretório para aplicativos Django
│   │   ├── 📂 core            # Aplicativo "core"
│   │   │   ├── 📄 __init__.py
│   │   │   └── 📄 versioning.py
│   │   └── 📄 __init__.py
│   ├── 📂 base_static         # Arquivos estáticos compartilhados
│   │   └── 📂 global
│   │       ├── 📂 css
│   │       ├── 📂 img
│   │       └── 📂 javascript 
│   ├── 📂 base_templates      # Modelos HTML compartilhados
│   │   └── 📂 global
│   │       ├── 📄 base.html
│   │       └── 📂 partials
│   │           ├── 📄 _footer.html
│   │           ├── 📄 _header.html
│   │           └── 📄 _pagination.html
│   ├── 📄 __init__.py
│   ├── 📄 asgi.py             # Configuração ASGI para deploy
│   ├── 📄 settings.py         # Configurações do projeto
│   ├── 📄 urls.py             # URLs do projeto
│   └── 📄 wsgi.py             # Configuração WSGI para deploy
├── 📂 env                     # Ambiente virtual (pode variar de acordo com a preferência)
├── 📂 utils                   # Módulos utilitários
├── 📄 .env                    # Arquivo de variáveis de ambiente
├── 📄 .gitignore              # Para manter a estrutura do projeto limpa
├── 📄 db.sqlite3              # Banco de dados SQLite3
├── 📄 LICENSE                 # Arquivo de licença do projeto
├── 📄 manage.py               # Script de gerenciamento do Django
├── 📄 README.md               # Documentação do projeto
└── 📄 requirements.txt        # Lista de dependências do projeto

🩺 myproject: O coração da Aplicação

Embarque em um passeio pelo seu projeto Django! Aqui é onde toda a mágica acontece. Você pode pensar neste diretório como o coração do seu projeto. É aqui que configuramos tudo, desde as configurações principais até as URLs e aplicativos. É o ponto de partida para todas as funcionalidades.

📂 apps: Dividindo em Aplicativos

Manter os aplicativos em um diretório separado ajuda a modularizar o projeto. Cada aplicativo é uma unidade funcional que pode ser desenvolvida, testada e implantada independentemente. Isso promove a reutilização de código e a escalabilidade do projeto.

🧬 Por que "core"?

O aplicativo "core" é um lugar que pode ser imaginado como um lugar onde você coloca funcionalidades essenciais e comuns que não têm relação direta com outros aplicativos. É como uma caixa de "itens essenciais" que são fundamentais para o projeto como um todo, mas não se encaixam perfeitamente em nenhum dos outros aplicativos específicos.

📁 base_static/ e 📁 base_templates/: Recursos Compartilhados

Esses diretórios contêm arquivos estáticos (como CSS, imagens e JavaScript) e modelos HTML compartilhados. Ter esses recursos centralizados ajuda a manter uma aparência consistente em todo o projeto e a evitar duplicação de código.


Lembre-se: Para integrar novos aplicativos no Django, é necessário especificar o caminho dentro do arquivo apps.py de cada aplicativo, indicando o trajeto em relação à raiz do projeto (por exemplo, myproject.apps.core). Posteriormente, é crucial adicionar esse caminho na seção "INSTALLED_APPS" do arquivo settings.py. Essa prática assegura que o Django reconheça e incorpore as funcionalidades do aplicativo no projeto.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment