Python Flask Basics Character Builder Loop Nested Items

Blue DiamondXD
Blue DiamondXD
5,369 Points

Now add a new <ul> inside of the <li> with a class of "courses". Inside this <ul> loop through the teacher's 'courses' k

im confuse ;-;

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 item in teachers %}
  <li>
    <h2>{{ item["name"] }}</h2>
  </li>
  {% endfor %}
</ul>
Stephen McClure
Stephen McClure
14,436 Points

I'm stuck on this one as well. The challenges in this whole chapter have been confusing because I can't see the data and see how the array is structured. I keep getting errors trying to figure out how to code it.

Edit. Uh well I accidentally solved it. Finally found the right code I had to use. The two lines I left spaced out below are where I kept having my problem. The problem ended up being my call back to the teachers array for the course information. For the life of me I can't get this to work again. I altered the code several times and eventually it accepted it but immediately skipped to the next video and I lost what the fix was.

NOTE this doesn't work:

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

  {% for course in teachers['courses'] %}
    <li>{{ course }}</li>

  {% endfor %}
  </ul>
</ul>

1 Answer

Joseph Soderberg
Joseph Soderberg
3,103 Points

The teacher dict you're iterating through should be teacher['courses'] not teachers['courses']

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