Building data-driven web apps with Flask and SQLAlchemy Transcripts
Chapter: Introducing the Flask framework
Lecture: Building block: Models

Login or purchase this course to watch this video and the rest of the course contents.
0:00 Here's another view method.
0:01 It's going to return the popular packages.
0:03 This is going to be the most popular packages on PyPI
0:07 and we're going to have the name and the summary for each one
0:10 and the URL for each one, and we'll have a list of those.
0:13 And our template, popular.html, is going to need that list
0:17 with all those details to generate dynamically some kind
0:20 of unordered list or whatever it is.
0:22 So what we're going to do is
0:23 we're going to come up with this data.
0:25 Here, we're just kind of hacking it in.
0:26 But in reality, popular would probably be a query
0:30 from the database with an order by
0:32 number of downloads this month
0:33 or something kind of complicated like that.
0:36 So we'll somehow, usually database or other API
0:38 we're going to get the most popular packages
0:41 and we need to provide that to the template.
0:44 So here, we say render template, give the template name
0:46 and then we have keyword arguments
0:49 packages and then our list here.
0:50 So in the template, it's going to be a variable
0:53 to find packages, and it's going to have this value here.
0:56 And we can pass as many of these as we want
0:59 or could even have a dictionary unpack it
1:01 or like I said at the beginning of this chapter
1:03 there's actually some cool patterns
1:04 where we would just return a dictionary itself.
1:07 So this is the model that flows
1:09 from the view methods over to the template.
1:12 So here, we're going to pass these by keyword arguments
1:15 and we can also pass methods or functions.
1:19 That's pretty cool, because sometimes you want
1:21 to have a little helper function that convert this
1:23 to an integer or give me a default value
1:25 or get the name of this, unless it's not there
1:28 then just return none, or something to this effect.
1:31 There's some cool little helper functions
1:32 that we might want to pass along
1:34 and if they're in this code or we have access to them
1:36 in this code, we could actually say
1:38 helper function a equals just the name of the function
1:41 and that's also available to our template.
1:44 This could be data or behavior
1:46 we need to pass along to our view.