Python for Entrepreneurs Transcripts
Chapter: Build web apps with Pyramid: Applied web development
Lecture: Concept: Shared layout
Login or
purchase this course
to watch this video and the rest of the course contents.
0:02
Let's review the three major steps you take to create a shared layout, It starts by taking a template and converting it to a macro
0:13
that will be the shared layout that defines the overall look and feel of the website. Next, we are going to capture this macro in the controller
0:20
and we are going to make it available to all of the views, the other dependent page templates
0:25
Finally, on most page templates we are going to use fill slot and stuff that individual unique data that makes up that particular page
0:32
into those slots and let the rest of it be filled by the overall macro. So step one, we begin by taking just the standard Chameleon template
0:40
created by the starter project, and we converted it to a macro, here you can see we are saying metal:define-macro and we give it a name,
0:47
in this case I wanted to call it layout. Notice we are applying that to the HTML tag so the entire page,
0:52
and then we define several slots that the dependent pages can use to stick in and populate the page,
0:59
here I've highlighted the main content where all the data goes but because of these slots are optional,
1:06
it's fine to put additional places of which basically adds additional flexibility
1:10
for your dependent views, in this case we made a place at the end of the layout so that we could add additional JavaScript files in the right location
1:18
if the dependent page needed to. Step two, in the dependent pages, like here home/index.pt, we are going to consume it,
1:27
so all you put in this page basically is use macro and within the use macro, we are going to fill the individual slots, so we are going to say
1:36
we are going to fill the content and whatever the page contents are, we put that right there, and we are also going to in this case be using
1:43
an additional JavaScript file that is not included into other pages, so we are going to include it, here we are going to use AngularJS on this one page
1:51
so we are going to include that script file along with maybe some others that aren't shown on the screen.
1:56
Now remember, to wire those together, we have to capture that somewhere
1:59
and then make it available, because we are using this idea of a controller based,
2:03
it's super easy to put it in this one place and it becomes available to our entire website. So that takes basically three steps:
2:09
One, we are going to get the renderer from the layout.pt, now remember, we have to use the "web application name:the path",
2:18
that's basically the package name in Python, then we are going to get the implementation,
2:23
and we are going to go to the implementation say I'd like to get the macro called layout,
2:27
that's what we called it, and we are just going to store that on a local variable called self.layout, that makes it available to the dependent views
2:33
by using macro view.layout. Now reasonable question is that seems like a lot of work, you have to juggle those things, and whatnot,
2:42
is there just a packages you can include that does this magic? Well, yes, there actually is a package you can include called Pyramid Layout.
2:48
But if you go back and look what we did, there is literally nine lines of code that weren't just already boilerplate HTML
2:55
and if you go read through here, it's not particularly simple, I mean, what they are doing is great, but I feel like it's just overkill
3:03
and there is too much going on here, so you can pick whichever makes you happy,
3:06
we are going to use this simple macro-driven mechanism that we've adopted here but if you want to use this package, you can as well.