Um dos recursos mais poderosos do Django é sua capacidade de reutilizar o código dinamicamente. A herança de modelo permite o compartilhamento de código entre os modelos pai e filho. Isso reduz muito a duplicação de esforços.
Django tem sua linguagem de modelo projetada para combinar com HTML. Você achará fácil trabalhar com os modelos do Django se já tiver trabalhado com código HTML antes. Outras linguagens de modelo baseadas em texto, como Smarty ou Jinja2, têm sintaxe semelhante.
Vamos aprender mais sobre herança de modelo construindo um projeto Django.
O que é um modelo Django?
No Django, um template é um arquivo de texto que pode gerar qualquer formato baseado em texto, como HTML, XML ou CSV.
tags de modelo do Django controlar a lógica que inclui variáveis e valores no modelo. As tags ajudam a separar a lógica do programa da apresentação do modelo. Eles também ajudam a manter seus modelos limpos e organizados.
O Django tem muitas tags embutidas, que se parecem com {% marcação %}. As tags são úteis de várias maneiras. Eles podem criar texto na saída, executar loops e carregar informações no modelo.
Você usará tags neste projeto para demonstrar a herança de modelo.
Criar um projeto Django
Para começar, criar um projeto Django. Crie um aplicativo chamado modelos. Depois de fazer isso, você estará pronto para criar uma função de exibição para o aplicativo, um caminho de URL e modelos para demonstrar a herança do modelo.
Criar uma Função de Visualização
Primeiro, crie um visualizar função que renderiza os modelos. Neste caso, você renderizará o index.html modelo. Importar o renderizar método de atalhos do Django. Em seguida, crie uma função de exibição chamada index que retorna e renderiza o modelo de índice.
de django.shortcuts importar renderizar
# Crie suas visualizações aqui.
defíndice(solicitar):
retornar renderização (solicitação,'index.html')
Criar um caminho de URL
A seguir, crie um URL caminho para a função de exibição exibir os modelos. Importar o caminho função de django.urls e o visualizar função de views.py arquivo. Então importe configurações e estático para renderizar quaisquer imagens e mídia que você possa ter nos modelos.
de django.urls importar caminho
de. importar Visualizações
de django.conf importar configurações
de django.conf.urls.static importarestático
urlpatterns=[
caminho('',views.index, nome='índice'),
]
seconfigurações.DEPURAR:
urlpadrões+=estático(configurações. MEDIA_URL, document_root=configurações. MEDIA_ROOT)
Criar modelos
Agora que você tem o visualizar e URL caminho, crie os modelos. Para demonstrar a herança de modelo, crie um base.html como um modelo pai. O base.html arquivo terá elementos gerais com os quais você deseja compartilhar index.html,o modelo filho.
{% load bootstrap5 %}
{% carregar estático %}
<!DOCTYPE html>
<html idioma ="pt">
<cabeça>
<meta charset ="UTF-8">
<meta http-equiv="Compatível com X-UA" conteúdo="IE=borda">
<metanome="janela de exibição" conteúdo="largura=largura do dispositivo, escala inicial=1,0">
<!-- títulos -->
{% se título %}
<título> Modelos Herdados {{title}}</title>
{% outro %}
<título> Modelos herdados </title>
{% fim se %}
{% estilos de bloco %}
{% bootstrap_css %}
<link rel ="folha de estilo" href="{% estático 'css/estilo.css' %}">
{% bloco final %}
</head>
<corpo>
{% incluir 'navbar.html' %}
{% conteúdo do bloco %} {% endblock %}
<!-- Links de inicialização -->
<script origem ="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integridade="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" origem cruzada="anônimo"></script>
</body>
</html>
Primeiro, carregue o Bootstrap e as dependências estáticas no base.html modelo. Você pode use o framework Bootstrap com seu projeto Django para estilizar as páginas HTML. A dependência estática carregada na parte superior carregará os recursos incluídos na pasta estática.
Os modelos do Django permitem que você passe bits de lógica responsáveis por exibir o conteúdo. As tags de modelo consistem em texto cercado por "{%" e "%}" personagens. O se/senão A instrução verifica as condições na função de exibição. Se a condição for verdadeira, ele renderiza o conteúdo no primeiro bloco; se false, renderizará o conteúdo no segundo.
O base.html arquivo também renderizará o conteúdo de navbar.html exatamente onde você coloca as tags de modelo. Isso significa que sempre que você estender o base.html, navbar.html também é herdado. Qualquer modelo estendendo o base.html herdará qualquer elemento com um {% incluir %} marcação.
Qualquer texto rodeado por {{}} é uma variável de modelo. Variáveis de modelo são dados dinâmicos fornecidos por funções de exibição. O Django também usa tags de bloco que usam uma tag aberta, como {% bloquear conteúdo %}e uma tag de fechamento, como {% bloco final %}.
As tags de bloco permitem que os modelos filhos substituam o conteúdo dos modelos pais. Neste caso, o index.html pode substituir seu conteúdo na área delimitada por tags de bloco. Não vai interferir no outro base.html componentes.
Vamos aplicar a lógica ao index.html
{% estende 'base.html' %}
{% bloquear conteúdo %}
<classe div ="centro de texto do contêiner" estilo="cor branca">
<h1>Eu Sou o Modelo de Índice</h1>
<p>Eu herdei o Bootstrap e a barra de navegação do base.html</p>
</div>
{% bloco final %}
No index.html modelo, use o {% ampliar %} tag para estender os componentes do base.html. Dentro das tags de bloco {% bloquear conteúdo %}, escreva todo o seu código.
No index.html modelo, você tem um elemento H1 e um parágrafo. Você pode usar as tags de modelo dentro dos divs para chamar variáveis do visualizar função.
Herança de modelo de teste no navegador
Agora você pode executar o servidor. Feito isso, verifique no navegador se o index.html arquivo herdou os elementos de base.html. Isso inclui links Bootstrap e o navbar.html modelo.
O index.html O arquivo deve herdar os estilos de barra de navegação e Bootstrap do modelo base. Em caso afirmativo, você usou a herança de modelo corretamente. Sem ele, você teria que adicionar a barra de navegação e os links do Bootstrap onde precisasse deles.
Além disso, todas as alterações feitas no base.html refletirá em todos os modelos aos quais se estende. Este princípio é importante no tratamento de erros. Você pode facilmente identificar modelos com bugs.
A herança de modelo é uma das muitas maneiras pelas quais o Django implementa o princípio Don't Repeat Yourself (DRY). Isso tornará seu desenvolvimento muito mais fácil e simples.
Por que você deve usar a herança de modelo do Django
A herança de modelo do Django é um de seus recursos mais complexos. Pode levar algum tempo para entendê-lo, mas, uma vez que você o faça, economizará muito esforço de desenvolvimento.
A herança de modelo permite que você compartilhe código entre modelos pai e filho. Isso garante que você não escreva código repetitivo em seus modelos.
A herança de modelo é importante em grandes projetos Django. Nesses casos, existem muitos aplicativos e muitos modelos para projetar. Os modelos pais oferecem muito controle sobre os outros componentes do aplicativo.
Ao aprender o sistema de template Django, você pode se divertir escrevendo um código limpo e poderoso.