Python Flask Basics Character Builder Loop Nested Items

For Loop not working as I expected

I'm not sure what I'm missing here. It says the amount of <li>'s listed is 0 which has me thinking it's not running the loop or it's not printing out anything. Thoughts?

flask_app.py
from flask import Flask, render_template

from teachers import TEACHERS

app = Flask(__name__)


@app.route('/')
def index():
    return render_template("teachers.html", teachers=TEACHERS)
templates/teachers.html
<ul class="teachers">
  {% for teacher in teachers %}
  <li>
    <h2 name="{{ teacher }}">{{ teacher.name }}</h2>
    <ul class="courses">
      {% for course in courses %}
      <li name="{{ course }}">{{ teacher.courses }}</li>
      {% endfor %}
    </ul>
  </li>
  {% endfor %}
</ul>

2 Answers

Peter Vann
Peter Vann
36,049 Points

Hi Chase!

Your mistake is here:

{% for course in courses %}

It should be:

{% for course in teacher.courses %} # the courses property (a list) for that specific teacher iteration

This passes both tasks

<ul class="teachers">
  {% for teacher in teachers %}
  <li>
    <h2 name="{{ teacher }}">{{ teacher.name }}</h2>
    <ul class="courses">
      {% for course in teacher.courses %}
      <li name="{{ course }}">{{ course }}</li>
      {% endfor %}
    </ul>
  </li>
  {% endfor %}
</ul>

I hope that helps.

Stay safe and happy coding!

Thank you!