#100DaysOfWeb in Python Transcripts
Chapter: Days 17-20: Calling APIs in Flask
Lecture: Writing the Pokemon route
0:00 Here's the routes.py file and I've created a get pokecolours function for us that's this one here.
0:09 And what it takes in is the color that the user enters. So this is an object that we are passing into this function.
0:19 And you can see straight away we have our requests dot get I've added in color dot lower here, what this is doing is whatever color the user enters
0:32 we are going to change it to all lowercase. And the reason is, with that endpoint of the Pokemon API for colors
0:40 it only takes lowercase letters, it actually matters. If you were to enter in the word black with a capital B, this would fail.
0:50 Right, so to protect us against that little tiny thing we are going to manually say that every color that is entered, every word
1:00 is going to be changed to lowercase. And that is simply going to be tacked on or appended with the little plus sign there
1:07 onto the end of our endpoint there, all right? That gets returned and assigned to the object we decode it with JSON, assign it to the poker data
1:19 as you saw in the previous video and we create our empty list of Pokemon. We then iterate through poker data
1:28 looking for the Pokemon species key, there was only one. And with all of the little mini dictionaries that were attached under this one as values
1:38 we are going to take the name key from those dictionaries and append them to this Pokemon list.
1:46 So every Pokemon in there that matches that certain color is going to be thrown into this list here. And then we return the Pokemon list.
1:54 And that's it. So now the next question is where are we going to call this function? Where in our app dot route for the Pokemon page
2:04 are we going to do this? All right, here is our Pokemon function here for the app route for the Pokemon webpage.
2:12 What we need to do is we need to actually start referencing that form that we created in our template. So we're going to say, all right
2:20 if that form sends us data then what are we going to do with it? So let's enter that in here. This may seem a little confusing
2:28 so just go with it for a second. We also need to create an empty list of those Pokemon explain why in just a sec. So we'll go if request.method
2:40 so remember, we got that method is not allowed thing, right? So if the request dot method is POST and pokecolour is in the request form
2:54 so that request form that we created we gave it a label, we gave it an id of pokecolour and we're referencing that here, we're saying
3:02 so if we are getting a POST method from our webpage and it's coming from a request form that is the id pokecolour then we're going to do something.
3:15 So if request dot method is POST and pokecolour is in request.form then what are we going to do we're going to take the color
3:29 here's request.form.get('pokecolour'). So when people entered a color we designated that color the id of pokecolour.
3:40 And we're taking that and we're going to assign it to the color object in our Python script. So this is the link between our front end and back end.
3:50 So we've just taken the data from the user and we're assigning that to the color object here. Now there is something I want to show you
3:59 and you've probably picked up on it. It's this here, I'll explain that just a second. But let's continue down.
4:06 Now what we want to do is we're going to take this list we'll throw one in here an empty list just like we did below Pokemon equals empty list.
4:17 And what we're going to do is we are going to assign that the list that is generated by our pokecolours function.
4:27 Okay, so this line is taking our function get pokecolour it's passing it the color that the user has specified.
4:36 And then it's spitting out that list of Pokemon names and assigning it to this Pokemon list here. And then we can return this list.
4:45 Now that we have this list we've built it and we have this list we can return it with our render template.
4:50 If you remember from our Chuck Norris joke thing all we really have to do is specify the name of the object we are passing to the form
4:58 and what name it's going to have in that form, all right? So we can go down here Pokemon equals Pokemon. And just to reiterate, this here
5:14 on the right of the assignment operator there is our Pokemon list here. And it's going to be called in our Flask template
5:22 it's going to be called Pokemon. Now, before we continue on, we do have to do a couple of little extra additions to our code here.
5:30 First and foremost, at the very top we need to actually allow ourselves to import the request functionality of Flask.
5:40 Let's just save everything we've done. All right, and we have here from Flask import render template. Well, now we want to import the ability
5:54 to have a request, to have a form so import requests. So from Flask import render template comma request
6:03 that will allow us to actually use that functionality. And going down, we actually need to tell our app route for Pokemon
6:14 that it has that POST method there. So let's just add it in here. Methods equals GET and POST. So we can both pull and push data from this page.
6:33 And that is going to allow us to actually work with our template. And this should work. So now all of this code is there.
6:41 We are now pulling the color from the user. We're talking to the API and then we're going to return that list of Pokemon back to our page.