Adding a CMS to Your Pyramid Web App Transcripts
Chapter: Course conclusion
Lecture: Review: CMS routing
0:00 we started out our exploration of adding the CMS functionality by talking about routing.
0:05 And the reason was it's essential that we find a way to get access to every single request that didn't correctly get processed in our sight.
0:14 If we slapped, asked for looking like slash packages slash seek welcome me. Well, the data driven side of that would go and grab it and process it.
0:22 But what if they ask for some other things like slash help?
0:26 If that wasn't already there, normally would just the Web framework pyramid would return a 44 and say, Too bad that didn't work.
0:34 What we want to do is look at that and say, Hold on. Is there actually something in the database?
0:38 Virtually we conceptually think of as a page, even though it's not technically in the site that we wanna return back to them. So that was routing.
0:45 Let's just review writing really quick in general. So we're gonna process that http get requests.
0:51 This is like clicking on a link to a euro or something. And this one is to slash project slash sequel Commie on the right.
0:58 We've got four view methods broken into two different vials. We've got some euros or routes associate with them.
1:06 So we said Slash home, that's going to go to our just slash. That's gonna goto home dot indexes going to call that function and do whatever that does.
1:15 So the system asked us slash Project slash sequel could be matched that the answer is no slash about. That's another registered one.
1:22 Also not a match slash project. Early bracket flash package.
1:26 So the curly braces mean here's a very well, it could be anything and yes, in fact, that does match. So your meds going to set up this match dicked?
1:35 It's going to say it's got different things that matched in the Ural in particular, where we have the variable package, its value is now seek.
1:42 Welcome me and then it's going to call the details function.
1:45 Passing this requested we can process it and tell them about this page that they requested.
1:51 Now setting up one of these special CMS routes, as I described, is a little bit different in our previous example where he had curly bracket package, it couldn't be slash sequel alchemy slash help or slash anything.
2:04 The flash can't appear there right It's not a general thing.
2:08 It's like, Well, there's slash project slash a single value What we need with our CMS world to say, give us everything.
2:15 And the trick to do that in Pyramid is to put this star that star sub path.
2:19 The star says match everything after this, not just a single value between the slashes.
2:27 And once we set this up, we can define a page method that's going to capture every request and then try to render a page here.
2:33 So we're going to say, first, get the request stop Mastic, and we're gonna get this sub path here.
2:39 The thing is that some path actually comes back as a list of things. Strings separated by those Ford slash it.
2:45 So if it was slash project slash sick welcome me, it would be a list of two things. One being project next string being sequel. Capi.
2:52 Did it work with that in our database?
2:54 We're gonna turn that back into something separated by slashes, and then we use our little seem a service to go talk to the database and get the page back, and then we just return that back to the page.
3:03 You were not really checking that case. The patient might not exist, but this gives you the general idea of how it works. Remember this route.
3:11 Appear this config dot Add route. It matches everything. The system will stop looking for other matches. Sooners that find something that is a match.
3:19 So it's very important that this line this config dot add routes. He mess that this goes at the very end of all the routing set up.
3:27 Because if you put it somewhere before then gonna be in trouble, that's not gonna work with anything below that, right? So do keep that in mind.