Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Flask Basics Templates and Static Files Flat HTML

Joseph Martin Nograles
Joseph Martin Nograles
4,696 Points

When passing through to html

Hi!

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 68,427 Points

Can you expand your question with larger code examples?

1 Answer

So the code in question looks like this:

code.py
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!