Ir para o conteúdo

Jinja2 Templates

O Fracttal ETL Hub usa templates Jinja2 para gerar conteúdo dinâmico durante as transformações. Os templates permitem criar documentos, emails e conteúdo personalizado baseado em dados de entrada.

Sintaxe Básica

Variáveis

Olá {{ name }} {{ lastname }}

Sua idade é: {{ age }}

Filtros

{{ name | upper }}
{{ price | round(2) }}
{{ date | strftime('%d/%m/%Y') }}

Condicionais

{% if user.is_active %}
    Usuário está ativo
{% else %}
    Usuário está inativo
{% endif %}

Loops

{% for item in items %}
    - {{ item.name }}: {{ item.price }}
{% endfor %}

Filtros Comuns

Filtros de String

{{ text | upper }}           # MAIÚSCULA
{{ text | lower }}           # minúscula
{{ text | title }}           # Primeira Letra Maiúscula
{{ text | trim }}            # Remove espaços
{{ text | replace('antigo', 'novo') }}  # Substitui texto

Filtros de Número

{{ number | round(2) }}      # Arredonda para 2 decimais
{{ number | abs }}           # Valor absoluto
{{ price | currency }}       # Formata como moeda

Filtros de Data

{{ date | strftime('%Y-%m-%d') }}    # Formata data
{{ date | age }}                     # Calcula idade
{{ now() | strftime('%H:%M') }}      # Hora atual

Exemplos de Templates

Template de Email

Assunto: Bem-vindo {{ user.name }}!

Caro {{ user.name }},

Obrigado por se registrar conosco em {{ registration_date | strftime('%d de %B de %Y') }}.

Detalhes da sua conta:
- Nome de usuário: {{ user.username }}
- Email: {{ user.email }}
- Plano: {{ user.plan | title }}

{% if user.plan == 'premium' %}
Você tem acesso aos recursos premium!
{% endif %}

Atenciosamente,
A Equipe

Template de Fatura

FATURA #{{ invoice.number }}
Data: {{ invoice.date | strftime('%d/%m/%Y') }}

Faturar para:
{{ customer.name }}
{{ customer.address }}

Itens:
{% for item in invoice.items %}
{{ item.description | ljust(30) }} {{ item.quantity }} x {{ item.price | currency }} = {{ (item.quantity * item.price) | currency }}
{% endfor %}

Subtotal: {{ invoice.subtotal | currency }}
Imposto ({{ tax_rate }}%): {{ invoice.tax | currency }}
Total: {{ invoice.total | currency }}

Configuração no ETL

Transform Template

{
  "transform": {
    "template": {
      "template_string": "Olá {{ name }}, seu pedido #{{ order_id }} está pronto!",
      "variables": {
        "name": {"var": "customer_name"},
        "order_id": {"var": "id"}
      }
    }
  }
}

Melhores Práticas

  1. Mantenha templates simples e legíveis
  2. Use nomes de variáveis significativos
  3. Adicione comentários para lógica complexa
  4. Teste templates com dados de amostra
  5. Trate variáveis ausentes graciosamente
  6. Use filtros para formatação de dados

Considerações de Segurança

  • Sanitize entrada para prevenir injeção
  • Valide variáveis antes de renderizar
  • Escape conteúdo HTML quando necessário
  • Limite complexidade do template

Documentação Relacionada