1
resposta

Partials

Gente, boa noite!!

Uma duvida sobre os Partials: se eu quiser usar o mesmo trecho de codigo pra apps diferentes, poderia usar a pasta templates com a partials na raiz do projeto ?

Grato!!

1 resposta

Olá Otoniel, tudo bem com você?

Peço desculpas pela demora no retorno.

Será possível sim criarmos partials que serão comuns a múltiplos aplicativos de um projeto para isso devemos criar uma pasta templates que conterá nossas partials, e deixarmos essa pasta na raiz do nosso projeto. Essa separação criando uma nova pasta para as templates que são comuns nos aplicativos é considerado uma boa prática.

Criando uma pasta de templates, nosso projeto ficará com uma estrutura de pasta semelhante à apresentada abaixo.


├───alurareceitas
│   │   settings.py  
│   │   urls.py      
│   │   wsgi.py      
│   │
│   └───static       
│           site.css 
│
├───receitas
│   │   apps.py      
│   │   urls.py      
│   │   views.py     
│   │
│   └───templates    
│           base.html
│           index.html
│           receita.html
│
├───statics
│       site.css
│
└───templates
    └───partials
            footer.html
            menu.html

Note que ao final foi criado uma nova pasta com o nome templates contendo a pasta partials e os arquivos footer.html e menu.html. Como esses dois arquivos estão em um diretório novo, será necessário adicionarmos esse caminho nas configurações do projeto, devemos abrir o arquivo alurareceitas/settings.py, e realizarmos a seguinte adição.

  • Dentro do arquivo serrings.py na lista com nome TEMPLATES devemos adicionar um novo valor para a chave DIRS, informaremos que os templates também podem ser encontrados dentro da pasta templates na raiz do projeto. Ficando como abaixo:

      'DIRS': [os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'receitas/templates')]

Note que foi adicionado outro caminho, onde o primeiro é referente aos novos templates na raíz do projeto, os.path.join(BASE_DIR, 'templates').

Já o segundo caminho, faz referência aos templates presentes no aplicativo receitas, os.path.join(BASE_DIR, 'receitas/templates').

Após realizarmos essas mudanças, o uso das partiais permanecem da mesma forma dentro dos arquivo index.html, mantendo a mesma sintaxe: {% include 'partials/menu.html' %} e {% include 'partials/footer.html' %}.

Agora podemos fazer o uso das partiais em múltiplos aplicativos, acessando as partiais presentes no diretório raiz, com a configuração que realizamos, caso o aplicativo receita necessite ter algum partiais exclusivo, basta que seja criado novamente a pasta de templates e partial dentro do aplicativo novamente.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!