Introduction
Render HTML templates and handle form data in Flask applications.
Templates
from flask import render_template
@app.route("/")
def index():
return render_template("index.html", title="Home")
# In template (index.html)
# {{ title }}
# {% for item in items %}
# <li>{{ item }}</li>
# {% endfor %}
Jinja2 Template Engine
<!-- Variables -->
{{ name }}
{{ user.age }}
<!-- Conditionals -->
{% if user.logged_in %}
Welcome, {{ user.name }}!
{% else %}
Please log in.
{% endif %}
<!-- Filters -->
{{ name|upper }}
{{ date|datetime }}
Form Handling
from flask import request, redirect, url_for
@app.route("/submit", methods=["GET", "POST"])
def submit():
if request.method == "POST":
name = request.form["name"]
email = request.form["email"]
return redirect(url_for("success"))
return render_template("form.html")
Practice Problems
- Create template inheritance
- Handle form submission
- Use Jinja2 filters
- Display flash messages
- Implement CSRF protection