Skip to content

12. Templates

Anderson edited this page Sep 27, 2018 · 1 revision

O uso de templates tem o objetivo de separar a lógica do aplicativo (views e models) da apresentação e aparência (templates).

  1. Criar diretório de templates

    1. No diretório onde está localizado o projeto Django, criar um diretório de nome 'templates'. Dica: encontre o arquivo manage.py

           (env) $ mkdir templates
      
    2. Em seguida, crie dentro da pasta templates um diretório de nome 'rango'. Neste diretório serão armazenados os templates do app rango. * É uma boa prática separar os templates em pastas separadas para cada aplicativo do seu projeto Django

             (env) $ mkdir templates/rango
      
  2. Alterar o arquivo settings.py

    1. No arquivo settings.py localizar as seguintes linhas e alterar:

       	TEMPLATES = [
       		{
       			(...)
       			DIRS = [<caminho_da_pasta>/tango_with_django_project/templates]
       			(...)
       		}
       	
       	]
      
  3. A lista DIRS informa ao Django onde os templates estarão armazenados.

  • esta não é a maneira correta. Caso este projeto seja utilizado em colaboração por outras pessoas, o caminho da pasta poderá variar. Para resolver esse problema, é possível utilizar as funções do Python para obter o diretório do seu projeto, independente de onde ele esteja.
  1. Utilizar caminhos relativos
    1. Criar uma variável TEMPLATE_DIR e alterar a lista DIRS para:

           TEMPLATE_DIR = os.path.join(BASE_DIR, "templates") 
           
           TEMPLATES = [
               {
                   (...)
                   DIRS = [TEMPLATE_DIR,]
                   (...)
               }
           ]
      
  • BASE_DIR é uma variável que já existe no arquivo settings.py, ela representa a localização do projeto Django.
  1. Adicionando templates
    1. Na pasta templates/rango, crie um arquivo chamado index.html, e adicione a este arquivo:

       <head>
           <title>Rango</title>
       </head>
      
       <body>
           <h1>Rango says...</h1>
           <div>
               hey there partner! <br /> 
               <strong>{{ boldmessage }}</strong><br />
           </div>
           <div>
               <a href="/rango/about/">About</a><br />
           </div>
       </body>
      
      • Tudo o que está entre colchetes duplos {{ }} representa variáveis. A variável {{ boldmessage }} deve estar definida na view para ser exibida no template.

      • O que está dentro de {% %} são comandos específicos da linguagem de templates do Django

    2. A partir deste código HTML será retornada uma página. Para isso é necessário alterar a view index() para retornar a página HTML ao invés de texto puro.

    3. No arquivo rango/views.py:

           def index(request):
               context_dict = {'boldmessage': 'olá rango'}
               return render(request, 'rango/index.html', context=context_dict)    
      
      1. context_dict é a variável que representa um dicionário onde serão passados os valores a serem exibidos no template. O contexto é responsável por mapear as variáveis Python com variáveis de template
      2. A função render() recebe como parâmetros uma requisição (request), o template a ser processado (rango/index.html), e opcionalmente um contexto (context_dict).

Clone this wiki locally