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!!
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!!
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.