Building data-driven web apps with Pyramid and SQLAlchemy Transcripts
Chapter: Routing and URLs
Lecture: Adding the package-details route

Login or purchase this course to watch this video and the rest of the course contents.
0:00 The last thing to do, let's extend this
0:02 let's have, I'm just going to copy and paste
0:05 it'll be a little quicker
0:06 I'm going to call this AccountController.
0:10 And PyCharm asks, can we add this to Git
0:13 I'm going to just say yes you can.
0:15 So we go over to our AccountController
0:17 I'm going to get rid of most of this.
0:19 The name has to be changed, so let's just
0:21 comment this out for a second.
0:23 But just so we have the pieces in place
0:25 and we'll do the same thing for packages.
0:29 Packages, we're going to write some bits here.
0:32 OK, so for packages, remember
0:34 what were looking for, is we're looking for /project
0:39 that's the way it works.
0:40 Let's just remind ourselves.
0:42 PyPI.org, if we go over to any particular project
0:46 and we click on this, notice the url
0:48 is /project/the name of the package
0:52 with a /.
0:54 Okay, so that's what we're aiming for
0:57 something like that.
0:59 And let's put a little project, package
1:05 name bit in there.
1:07 So this is the route that we're looking for.
1:09 And let's call that package_details.
1:18 And this is going to be packages
1:21 uh, not index, how about details?
1:24 For now, let's just return no data.
1:28 We'll return the package name in just a minute.
1:32 Okay, great, this is looking a little broken
1:35 but it's actually not broken
1:36 that's just PyCharm not quite refreshing itself correctly.
1:39 So we've got our home, it says home
1:42 let's just call this details.
1:45 It's going to be contained in the packages
1:47 so it'll be packages.details, that's
1:48 we don't really need, since we've broken this
1:51 up into the modules by category
1:53 we don't need to put them on the method names.
1:56 So we need to add this.
1:57 If we try to run this now
2:01 and we refresh, well, actually, it doesn't even run.
2:04 Didn't make it that far.
2:05 If we come over here and we look
2:07 you'll see, no route named package_details
2:11 found in view registration.
2:13 Alright, so the next thing to do is going to be go fix that.
2:16 So that brings us back to this method
2:18 we were working on before.
2:20 So we've got our stuff to do with home_controller
2:24 maybe, we'll put it like that, I don't know.
2:26 Over here we'll have packages
2:28 or PackageController.
2:31 And we're just going to do the same thing.
2:32 config.add_route
2:34 and we're going to give it a name.
2:36 What'll we call it, project_details, I think?
2:39 Let's look, no, package_details.
2:42 So we'll say package_details
2:45 and the url is actually going to be /project
2:49 / whatever the name is.
2:51 Now, something that's a little bit annoying
2:54 with Pyramid routes is
2:56 whether that's there or not makes a big difference.
2:59 And if you want to let them put it there
3:00 or not put it there, it's not a great option.
3:03 So what we can do is, like
3:05 have two routes, one with a /
3:07 and one without a /, it's okay.
3:10 It's not great, but it'll do.
3:12 So if we come over here, for that to work
3:17 we're going to have to have both routes here.
3:20 So let's rerun this, and it should just say
3:23 the details is not found, so we'll fix that next.
3:25 But let's see that we can get a little farther
3:27 what we did, it ran, that's good.
3:29 If we refresh it, we come over here to
3:32 /project/requests.
3:37 Great, details wasn't found.
3:38 So the next thing we have to do is just put the details
3:40 in there, easy enough.
3:44 So let's go down here and
3:46 what's a great example?
3:47 Let's take about is pretty simple.
3:49 Let's paste that as details
3:52 just copied and pasted in PyCharm.
3:54 We'll go over here and we'll have package
3:57 and I'm just going to put the name, package name.
4:09 We'll figure out the details when we get
4:10 to the data access section
4:12 but let's just work on the route to make sure
4:14 this is loading the correct one, okay?