Python Flask Basics Templates and Static Files Flat HTML

Joseph Martin Nograles
Joseph Martin Nograles
4,696 Points

When passing through to html


Two questions

Why do we use "num1" = num1 when def add while name = name when def index? Why doesn't "name" = name work?

Chris Freeman
Chris Freeman
Treehouse Moderator 59,597 Points

Can you expand your question with larger code examples?

1 Answer

Myers Carpenter
Myers Carpenter
Treehouse Staff

So the code in question looks like this:
def index(name="Treehouse"):
    return render_template("index.html", name=name)

# ...
def add(num1, num2):
   context = {"num1": num1, "num2": num2}
   return render_template("index.html", **context)

To understand what's going on in add() you need to know about keyword args and dicts. Python allows you to pass keyword args to a callable (aka method or function). The most often you will see them like this render_template("index.html", name=name), where name is a keyword arg.

Sometimes you want to make a variable that has all the keyword args you are going to pass to a callable later. That's what's going on in add() with the context var. Kenneth creates a dict, then later expands that dict with **context as keyword arguments to render_template(). If you go back in the video he shows an alternative way of writing it render_template("index.html", num1=num1, num2=num2).

Hope that helps!