Python Flask Basics Character Builder Loop Nested Items

Daniel Bowen
Daniel Bowen
6,488 Points

Not sure what I'm doing wrong here, as far as I can tell everything is right.

I've looked through a bit of stuff on the forums, can't find anything to help.

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

</ul>
Daniel Bowen
Daniel Bowen
6,488 Points

Now add a new <ul> inside of the <li> with a class of "courses". Inside this <ul> loop through the teacher's 'courses' key, creating an <li> for each course and printing the course.

1 Answer

Christopher Shaw
seal-mask
PLUS
.a{fill-rule:evenodd;}techdegree seal-36
Christopher Shaw
Python Web Development Techdegree Graduate 58,234 Points

You are not looping though the teachers courses. To loop though the courses in the inner loop:

    <ul class="courses">
      {% for course in listItem["courses"] %}
         <li>{{ course }}</li>
      {% endfor %}
    </ul>
'''

You have also used the same variable name 'listItem' on the inner and outer loop. This is a bad practice as the as the variable will change.
Daniel Bowen
Daniel Bowen
6,488 Points

You're fine, and thank you for pointing that out. Worked like a charm. I've gotten so used to copying and pasting pieces of the code challenges it slipped past me. Thanks again.