Introdução aos modelos do Django
Os modelos são arquivos de texto que podem ser usados para gerar formatos baseados em texto, como HTML ou XML. Cada modelo contém alguns dados estáticos que são compartilhados entre o site, mas também pode conter espaços reservados para dados dinâmicos. Os modelos contêm variáveis e marcas que controlam o comportamento e o que será exibido como a página final.
Vamos explorar como os modelos funcionam no Django.
Variáveis
As variáveis em um modelo se comportam como em qualquer outra linguagem de programação. Podemos usá-las para indicar um valor que é avaliado em runtime.
O Django fornece uma forma de exibir variáveis em um modelo usando a sintaxe {{ }}
. Qualquer variável colocada entre as chaves duplas é avaliada quanto ao conteúdo de texto e colocada no modelo. Se quisermos exibir o nome do cão, por exemplo, poderemos usar {{dog.name}}
.
A exibição transmite as variáveis para um modelo usando a função render
, que vamos explorar em um módulo posterior. Você pode transmitir valores e outros dados para um modelo, incluindo um QuerySet do ORM do Django. Isso permite que você veja dados no banco de dados do aplicativo.
Filtros
Os filtros são uma ótima forma de controlar como os dados são exibidos quando solicitados em um modelo. Como os filtros já foram criados, eles fornecem uma forma fácil de formatar os dados sem precisar escrever nenhum código especial.
Por exemplo, digamos que precisamos imprimir os nomes das raças dos cães e queremos garantir que a primeira letra de cada nome esteja maiúscula.
{{ dog.name | capfirst }}
A variável fica à esquerda do símbolo de barra vertical (|
) e o filtro à direita. Esse é apenas um dos muitos filtros que você pode usar para manipular os dados quando estiver usando filtros de modelo do Django.
Marcações
Você pode usar marcas para executar loops, criar texto ou fornecer outros tipos de comandos para o mecanismo de modelo. As marcas geralmente se assemelham à sintaxe do Python. Mas como elas são executadas dentro do modelo (em vez de dentro do interpretador do Python), você observará algumas pequenas diferenças na sintaxe. Não teremos a capacidade de contar com tabulações como no Python, e cada instrução de bloco exigirá um end
correspondente.
Podemos usar instruções if
para a lógica booliana e loops for
para a iteração. A sintaxe principal das instruções if
é semelhante à seguinte:
{% if dogs %}
<h2>There are {{ dogs | length }} ready for adoption!</h2>
{% else %}
<h2>We have no dogs ready for adoption. Please check back later!</h2>
{% endif %}
Observação
A instrução elif
é usada da mesma forma que elif
no Python.
Da mesma forma, podemos usar um loop for
para exibir os nomes de todos os cães em uma lista:
<ul>
{% for dog in dogs %}
<li>{{ dog.name }}</li>
{% endfor %}
<ul>
Herança de modelo
Os modelos são usados para gerar o HTML que você deseja que o usuário veja ao usar seu aplicativo. Em geral, as páginas de um aplicativo têm uma estrutura comum, na qual a navegação pode estar à esquerda, um título está na parte superior e há uma folha de estilos consistente. Os modelos do Django dão suporte a estruturas compartilhadas por meio de herança.
Criar uma página pai
Criar uma página pai é o mesmo que criar qualquer modelo HTML do Django. Você fornece a estrutura externa e inclui espaços reservados {% block %}
. Esses espaços reservados permitem que os filhos forneçam o conteúdo a ser colocado neles.
Vamos criar uma página pai para importar uma folha de estilos, fornecer um título padrão e fornecer um cabeçalho que desejamos exibir em todas as páginas:
<html>
<head>
<link rel="stylesheet" href="site.css">
<title>{% block title %}Shelter site{% endblock %}</title>
</head>
<body>
<h1>Shelter site</h1>
{% block content %}
{% endblock %}
</body>
</html>
Criar uma página filho
Podemos criar uma página filho com base no pai usando a palavra-chave extends
. Com essa palavra-chave, fornecemos o nome do arquivo HTML do modelo pai. Em seguida, usamos as instruções {% block %}
apropriadas para adicionar o conteúdo específico a essa página.
{% extends "parent.html" %}
{% block title %}
Welcome to the Shelter site!
{% endblock %}
{% block content %}
Thank you for visiting our site!
{% endblock %}
Quando a página é exibida, ela é semelhante à seguinte:
<html>
<head>
<link rel="stylesheet" href="site.css">
<title>Welcome to the shelter site</title>
</head>
<body>
<h1>Shelter site</h1>
Thank you for visiting our site!
</body>
</html>
Observe como os espaços reservados são substituídos pelo conteúdo da página filho.
Observação
Para este exemplo, usamos um texto estático. Como você verá, também poderá usar um conteúdo dinâmico.