Python Flask Basics Character Builder Loop Nested Items

John Baulig
John Baulig
8,930 Points

Looping through teachers in Flask Basics | error: Didn't find the right number of 'li's. Found 4.

Hi,

Hoping you can help me with this code and understanding this looping better. I had no problem in the Python classes with iteration and dictionaries but I am stuck on this!

Thanks for your assistance!

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> {{ teacher['name'] }} </h2>
      <ul class="courses">
        {% for course in teachers %}
          <li>{{ course['courses'] }}</li>
        {% endfor %}
      </ul>
    </li>
  {% endfor %}
</ul>

1 Answer

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 59,905 Points

By saying

        {% for course in teachers %}

course is being assigned to each element in teachers, which is a teacher.

Then

 <li>{{ course['courses'] }}</li>

is effectively "teacher['courses']" which will produce a line for each teacher: 4 total

Instead, since you already have the teacher in the variable teacher, you can get the teacher's courses using "teacher['courses']":

      <ul class="courses">
        {% for course in teacher['courses'] %}
          <li>{{ course }}</li>
        {% endfor %}
      </ul>
John Baulig
John Baulig
8,930 Points

Chris,

Thanks so much! I understand this now. I really appreciate it!