Laços e condicionais do Jinja2
Renderize listas e ramifique a marcação nos modelos.
Laços e condicionais do Jinja2 é uma aula grátis de Flask Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Flask Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Flask Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Markup That Reacts
Sometimes you must repeat rows or hide a section. Jinja2 adds logic tags so your template can loop and branch over data.
The Statement Delimiter
Logic uses {% %}, not double braces. Braces output a value, while percent tags run control flow like loops and conditions.
A Basic for Loop
Repeat markup with a for loop. Each pass binds the current item so you can print it inside the loop body.
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}Loops Must Close
Every block opens and closes. A for loop ends with endfor, which tells Jinja2 exactly where the repeated section stops.
The loop Variable
Inside a loop, Jinja2 gives you a special loop object. Use loop.index for a 1-based counter on each pass.
{% for u in users %}
{{ loop.index }}. {{ u }}
{% endfor %}Handling Empty Lists
A for block can include an else branch. It runs only when the list is empty, perfect for a no items message.
{% for t in todos %}{{ t }}{% else %}None yet{% endfor %}An if Condition
Show markup only when a test passes using if. It ends with endif and accepts ordinary Python-style comparisons.
{% if user %}
<p>Welcome back</p>
{% endif %}Adding else
Pair an if with else to handle the other case. One branch renders when true, the other when the test is false.
{% if user %}Hi{% else %}Please log in{% endif %}Multiple Branches with elif
Chain extra cases with elif. Jinja2 checks each in order and renders the first branch whose test is true.
{% if n > 0 %}+{% elif n < 0 %}-{% else %}0{% endif %}Combining Loops and Ifs
Nest an if inside a loop to filter as you go. This lets each item decide whether it appears in the output.
{% for p in posts %}{% if p.live %}{{ p.title }}{% endif %}{% endfor %}Keep Templates Readable
Light logic in templates is fine, but deep nesting hurts. Prepare filtered data in your view to keep markup clean.
Quick Check
Which delimiter does Jinja2 use for control flow like loops and conditionals?
Recap
You can now loop with for, branch with if and elif, use the loop counter, and handle empty lists, all inside templates. Well done! ✨
Perguntas Frequentes
A aula “Laços e condicionais do Jinja2” é grátis?
Sim — o texto completo de “Laços e condicionais do Jinja2” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Flask Academy, atualize para CoddyKit PRO. O curso de Flask Academy inclui 4 aulas no total.
O que vou aprender em “Laços e condicionais do Jinja2”?
Renderize listas e ramifique a marcação nos modelos. Você pratica Flask Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Flask Academy?
Nenhuma experiência prévia é necessária. Flask Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Laços e condicionais do Jinja2”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Flask Academy?
Sim. Cada aula de Flask Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- render_template e a pasta templates
- Passe dados para um modelo
- Laços e condicionais do Jinja2
- Escape automático e o filtro safe