Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Flask Jinja template list of dictionaries

from flask import Flask, render_template
import csv
app = Flask(__name__)

@app.route("/")
def main():
    planets = read_csv_file('planets.csv')

    return render_template('main.html',
        title     = "Planets",
        planets   = planets,
    )

def read_csv_file(filename):
    planets = []
    with open(filename) as fh:
        rd = csv.DictReader(fh, delimiter=',')
        for row in rd:
            planets.append(row)
    return planets
<h1>{{ title }}</h1>
<table>
  {% for planet in planets %}
     <tr>
       <td>{{ planet['Planet name'] }}</td>
       <td>{{ planet['Distance (AU)'] }}</td>
       <td>{{ planet['Mass'] }}</td>
     </tr>
  {% endfor %}
</table>
import app

def test_app():
    web = app.app.test_client()

    rv = web.get('/')
    assert rv.status == '200 OK'
    assert b'<h1>Planets</h1>' in rv.data
    assert b'<td>Mercury</td>' in rv.data
Planet name,Distance (AU),Mass
Mercury,0.4,0.055
Venus,0.7,0.815
Earth,1,1
Mars,1.5,0.107
Ceres,2.77,0.00015
Jupiter,5.2,318
Saturn,9.5,95
Uranus,19.6,14
Neptune,30,17
Pluto,39,0.00218
Charon,39,0.000254