Pular para conteúdo

Templates

Templates são utilizados para renderizar o conteúdo HTML gerados pelo grupo de dados de contexto. O NetBox fornece um grupo de templates nativos para ser utilizados pelas visualizações (views) do plugin. Os autores de plugins podem extender esses templates para minimar o trabalho necessário para criar templates customizados enquanto que garante que o conteúdo produzido pelo plugin esteja de acordo com o layout e estilo do NetBox. Esses templates são escritos em Django Template Language (DTL).

Template File Structure Estrutura de Arquivos do Template

Os templates do plugin devem estar dentro do caminho do arquivo templates/<plugin-name> dentro do root do plugin. Por exemplo, se o nome do seu plugin my_plugin e cria um template nomeado de foo.html, deve ser salvo como templates/my_plugin/foo.html. (Você com certeza pode utilizar sub diretórios abaixo desse ponto também). Isso garante que a engine de template possa localizar o template para renderização.

Blocos Padrões (Standard Blocks)

Os blocos de templates abaixo estão disponíveis em todos os templates.

Nome Obrigatório Descrição
title Sim Título da página
content Sim Conteúdo da págiina
head - Conteúdo para incluir o elemento <head> no HTML
footer - Conteúdo do rodapé (footer) da página
footer_links - Seção de links do rodapé da página
javascript - Conteúdo JavaScript para ser incluso no final do elemento <body> do HTML

Note

Para mais informações em como o blocos de templates funcionam, consulte a documentação do Django.

Templates Base

layout.html

Caminho (path): base/layout.html

O NetBox fornece um template base para garantir uma experiência do usuário consistente, que os plugins podem extender seu próprio conteúdo. Esse template é utilizado por um propósito geral que pode ser utilizado quando uma função específica do template abaixo são suportados.

Blocos (Blocks)

Nome Obrigatório Descrição
header - Cabeçalho da Página
tabs - Tabs de navegação horizontais
modals - Elementos de modelo (modal) do Bootstrap 5

Exemplo

Um exemplo do template do plugin que extende o layout.html está incluso abaixo.

{% extends 'base/layout.html' %}

{% block header %}
  <h1>My Custom Header</h1>
{% endblock header %}

{% block content %}
  <p>{{ some_plugin_context_var }}</p>
{% endblock content %}

A primeira linha do template instrui o Django a extender o template base do NetBox, e as seções block injetam nosso conteúdo customizado dentro dos blocos header e content.

Note

O Django renderiza os templates com sua própria linguagem customizada. Isso é muito similar ao Jinja2, no entanto há distinções importantes as quais os autores devem estar cientes. Certifique-se de se familiarizar com a linguagem template do Django antes de tentar criar seus novos templates.

Templates Genéricos da Visualização (Generic View Templates)

object.html

Caminho (path): generic/object.html

Esse template é usado pela visualização genérica ObjectView (generic view) para exibir apenas um objeto.

Blocos (Blocks)

Nome Obrigatório Descrição
breadcrumbs - Breadcumb da lista de items (elementos <li> HTML)
object_identifier - Um indentificador único (string) do objeto
extra_controls - Botões de ações adicionais para serem exibidos
extra_tabs - Tabs adicionais para serem inclusas

Contexto (Context)

Nome Obrigatório Descrição
object Sim A instância do objeto sendo visualizada

object_edit.html

Caminho (path): generic/object_edit.html

Esse template é utilizado pela visualização genérica (generic view) para criar ou modificar um único objeto.

Blocos (Blocks)

Nome Obrigatório Descrição
form - Conteúdo de formulário customizado (dentro do elemento HTML <form>)
buttons - Botões do formulário para submetê-lo

Contexto (Context)

Nome Obrigatório Descrição
object Sim A instância do objeto sendo modificada (none, se estiver criando)
form Sim A classe do formulário do objeto sendo criada/modificada
return_url Sim A URL que o usuário é redirecionado depois de submeter o formulário

object_delete.html

Caminho (path): generic/object_delete.html

Esse template é utilizado pela visualização genérica (generic view) ObjectDeleteView para deletar um objeto único.

Blocos (Blocks)

None

Contexto (Context)

Nome Obrigatório Descrição
object Sim A instância do objeto sendo deletada
form Sim A classe do formulário confirmando a remoção do objeto
return_url Sim A URL que o usuário está sendo redirecionado depois de submeter o formulário

object_list.html

Caminho (path): generic/object_list.html

O template sendo utilizado pela visualização genérica ObjetListView para ser exibida em uma lista filtrável de objetos múltiplos.

Blocos (Blocks)

Nome Obrigatório Descrição
extra_controls - Botões de ações adicionais
bulk_buttons - Grupo de ações (bulk actions) de botões adicionais para serem exibidos abaixo da lista de objetos

Contexto (Context)

Nome Obrigatório Descrição
model Sim A classe do objeto
table Sim A classe da tabela utilizada para renderizar a lista de objetos
permissions Sim Um mapeamento para adicionar, alterar e deletar as permissões do uusário corrente
actions Sim Uma lista de botões para exibir (add, import, export, bulk_edit, e/ou bulk_delete)
filter_form - O formulário de filterset atrelado para filtragem da lista de objetos
return_url - A URL retornada para ser passada ao submeter um formulário de operações em grupo (bulk operation)

bulk_import.html

Caminho (path): generic/bulk_import.html

O template utilizado pela visualização genérica (generic view) BulkImportView para importar múltiplos objetos de uma vez dos dados de um CSV.

Blocos (Blocks)

None

Contexto (Context)

Nome Obrigatório Descrição
model Sim A classe do objeto
form Sim A classe do formulário para importar o CSV
return_url - A URL retornada para ser passada ao submeter uma operação em grupo (bulk operation)
fields - Um diretório de campos de formulário, para opções de importação de exibição

bulk_edit.html

Caminho (path): generic/bulk_edit.html

O template utiliado pela visualização genérica (generic view) BulkEditView para modificar múltiplos objetos simultaneamente.

Blocos (Blocks)

None

Contexto (Context)

Nome Obrigatório Descrição
model Sim A classe do objeto
form Sim Classe de formulário para edição em grupo
table Sim Uma classe de tabela utilizada para renderizar a lista de objetos
return_url Sim A URL que o usuário é redirecionado ao submeter um formulário

bulk_delete.html

Caminho (path): generic/bulk_delete.html

O template utilizado pela visualização genérica (generic view) BulkDeleteView para deletar múltiplos objetos simultaneamente.

Blocos (Blocks)

Nome Obrigatório Desrição
message_extra - Um conteúdo de mensagem de aviso suplementar

Contexto (Context)

Nome Obrigatório Descrição
model Yes A classe do objeto
form Yes A classe de formulário para remoção em grupo (bulk delte)
table Yes A classe da tabela utilizada para renderizar uma lista de objetos
return_url Yes A URL que o usuário é redireiconado após submeter o formulário

Tags

O template customizado de tags abaixo estão disponíveis no NetBox.

Info

Esses tamplates de backend são automaticamente carregados: Você não precisa incluir uma tag {% load %} no seu template para ativá-los.

::: utilities.templatetags.builtins.tags.badge

::: utilities.templatetags.builtins.tags.checkmark

::: utilities.templatetags.builtins.tags.customfield_value

::: utilities.templatetags.builtins.tags.tag

Filtros (Filters)

Os filtros de template customizado estão disponíveis no NetBox.

Info

Esses templates de backend são automaticamente carregados: Você não precisa incluir uma tag {% load %} no seu template para ativá-los.

::: utilities.templatetags.builtins.filters.bettertitle

::: utilities.templatetags.builtins.filters.content_type

::: utilities.templatetags.builtins.filters.content_type_id

::: utilities.templatetags.builtins.filters.linkify

::: utilities.templatetags.builtins.filters.meta

::: utilities.templatetags.builtins.filters.placeholder

::: utilities.templatetags.builtins.filters.render_json

::: utilities.templatetags.builtins.filters.render_markdown

::: utilities.templatetags.builtins.filters.render_yaml

::: utilities.templatetags.builtins.filters.split

::: utilities.templatetags.builtins.filters.tzoffset