Adding a CMS to Your Pyramid Web App Transcripts
Chapter: Routing for the CMS
Lecture: Examining the existing routes
Login or
purchase this course
to watch this video and the rest of the course contents.
0:00
Before we start adding our CMS content and our CMS routes to our website, let's just quickly review the routes that are already in place.
0:09
Now I like to organize my projects more than is specified by various frameworks.
0:16
So here you can see in our main method, we've got our includes, our sublibraries, optional libraries that get included, like chameleon.
0:23
Over here, we've got our database initialization and then our routing. In newer versions of Pyramid, if you create a new project,
0:31
it'll put this routing into a separate folder, and then include it kind of like this.
0:35
That's fine, but I don't think we really I like it just this way as well. It's totally good.
0:41
So down here, let's look at what we got. There's quite a bit going on, isn't there? So we have the static route here, and it's at one hour.
0:50
Just give you a sense of my real websites. It's at a year,
0:53
and we do some techniques to make sure the URL changes if underlying content that shouldn't be cached any more changes.
0:59
So this is kinda gonna small, but that's okay.
1:02
Here we have, I like to group them by controller you could tell already I like to use a lot of organization here.
1:08
So here we have 'home', which has various methods like 'home' and 'about', and our templates have 'home' and 'about'
1:13
our view models have something like that about page doesn't have a view model, right?
1:18
So same thing here we have home or have some names 'home' and '/about'. Slash in about. And let's go over here and look how that ties back.
1:27
So over here we have our 'home index' and then our 'home about'. We could just call it 'index' and 'about', but I decided to call it this.
1:33
And you could see the route name right here, 'home' and 'about'.
1:36
And if for some reason, this was different, like if I put a '2' there and try to run it,
1:41
It's going to crash and say we looked for a route called 'about2'. Apparently in the entire 'init_route' method,
1:48
The whole startup of the app, You didn't ever register a route called 'about2'
1:52
So, that's how these tie together. You can see that it's pretty picky that those were actually valid. What you put there.
1:58
We also happen to be saying we're using this. These various templates here and then returning a dictionary to those templates.
2:05
Just standard pyramid stuff. So let's go back and look at some more. We have the package controller.
2:10
This is for the various packages, So if we pull this up, you'll recall. We go and click on one of these.
2:19
notice it's 'project/aws-cli'. If this was sqlalchemy, is that in our short database? It is.
2:25
So you can see it pulls it up to this bit right here is passed over to that method. And the way it's done is, we say it's '/project/<SOME VARIABLE>'.
2:35
We'll grab that we call it 'package_name'. Now, One thing that's annoying about Pyramid is whether or not the slashes on the end matters.
2:43
So I've added a second route to say if they put the slash, same action, do the same thing. Here you can see one that has a constraint.
2:51
So this actually can appear first because it's the only one with numbers in the front,
2:55
so I could go over here and put '1' and see the most popular package
2:59
Where as the website doesn't really pull it back It just says the 1st, 2nd, 6th, and so on.
3:06
But it's not catching things like 'about' because of this constraint here. Okay, so we got that we got a package, details, some release details.
3:15
And then down here, we have our account for log in, and register, and so on. One other thing let's look at the account bit right here
3:23
that you work with and specifying a matching these routes. I talked about the URL matching the pattern. That's true but also the http verb.
3:31
Are you just doing a request to a page which would be a GET, or are you submitting a form back to that page which would be a POST.
3:37
So we can also distinguish between these two methods here on whether it's a GET or a POST, in addition to having the same route.
3:46
I guess that will come up somewhere as we work on our CMS. Technically, the CMS as a consumer of it will probably be only GET.
3:53
As we work on the admin section to edit our pages and whatnot, of course, we're gonna need a have both of these in place.
4:00
All right, well, that's pretty much it for the routing that we have in place here I think we're, yeah. I think we're pretty much good