Atualizado: 14/12/2024

Configurando Templates - Django

A configuração de templates em um projeto Django é gerenciada pela variável TEMPLATES no arquivo settings.py. Por padrão, ela apresenta a seguinte estrutura:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

Essa variável contém uma lista de configurações específicas para cada template engine utilizada no projeto. Por padrão, há apenas uma configuração, com os seguintes componentes principais:

  • BACKEND: Determina a template engine utilizada. O valor padrão é a engine interna do Django, django.template.backends.django.DjangoTemplates.

  • DIRS: Define uma lista de diretórios adicionais onde o Django deve buscar arquivos de template. Inicialmente, essa lista está vazia.

  • APP_DIRS: Especifica se o Django deve buscar arquivos de template nas pastas templates de cada aplicação registrada.

  • OPTIONS: Contém configurações adicionais, incluindo os processadores de contexto que serão aplicados durante o processamento dos templates.

Organização de Templates

Ao configurar APP_DIRS como True, o Django automaticamente busca arquivos de template na pasta templates de cada aplicação registrada no projeto. Essa abordagem facilita a organização dos templates de forma modular, atribuindo arquivos específicos para cada aplicação, além de evitar conflitos de nomenclatura.

No entanto, para templates compartilhados entre várias aplicações, uma organização centralizada pode ser mais adequada. Um exemplo é a criação de uma pasta templates no diretório principal do projeto. Essa pasta pode ser usada para armazenar templates globais ou comuns. Um exemplo básico de template global seria o arquivo index.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Django</title>
</head>
<body>
    <h1>Hello www.programicio.com!</h1>
</body>
</html>

Suponha que o projeto seja chamado programicio. A estrutura do diretório poderia ser representada assim:

programicio/
|-- templates/
|   |-- index.html
|-- __init__.py
|-- asgi.py
|-- settings.py
|-- urls.py
|-- wsgi.py
hello/
|-- migrations/
|-- __init__.py
|-- admin.py
|-- apps.py
|-- models.py
|-- tests.py
|-- views.py

Nesse caso, a pasta templates no diretório raiz do projeto armazena arquivos que podem ser acessados por qualquer parte do sistema.

Configuração de Caminhos no settings.py

Para que o Django reconheça e utilize o template index.html localizado na pasta templates principal, o caminho dessa pasta precisa ser especificado no parâmetro DIRS da variável TEMPLATES. A configuração seria ajustada da seguinte forma:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            BASE_DIR / "programicio/templates",
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

Nesse exemplo, o caminho BASE_DIR / "programicio/templates" é adicionado ao parâmetro DIRS. A variável BASE_DIR, definida no início do arquivo settings.py, é responsável por determinar o diretório principal do projeto:

BASE_DIR = Path(__file__).resolve().parent.parent

Essa configuração instrui o Django a procurar templates adicionais no diretório especificado.

Renderização de Templates

O arquivo views.py pode conter uma função que renderiza o template index.html:

O arquivo urls.py define a rota que mapeia a função index:

Quando a rota configurada é acessada no navegador, a função index renderiza o conteúdo do arquivo index.html. Isso exibe o template configurado, permitindo que ele seja utilizado como página inicial do projeto.

Navegador exibindo template configurado pelo Django
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com