Chapter: HTML template partials
Lecture: The jinja-partials package
0:00 When we're creating web applications, there's often times we need to duplicate some part of our
0:07 HTML. Here's an example from a project I'm about to tell you about. You can see we've got a video,
0:14 we've got a subtitle, and we have the number of views, and we're going to use
0:17 that on the homepage, and we're also going to use that in this listing where we can see more of them. They should look kind of familiar,
0:23 huh? Well that is exactly the same thing. Yes, it's in a different section, and it probably has a different overall CSS selector
0:32 applied to it, but the HTML is identical. And so, why should we write that and maintain it in multiple places?
0:39 We've already seen that in our application. Remember the click to add video button? It has to appear in two places.
0:45 But I really wanna emphasize that while this is not specifically about htmx, it really applies to all web applications.
0:53 They would benefit from having more organization. It especially applies to using htmx with any of the Python web frameworks be that
1:02 Flask, Pyramid, Django or some other one like FastAPI. So this ability to reuse like a function parts of our HTML in different places is
1:15 really critical. We haven't seen a complicated example of it yet, but if we kept going without taking a pause and adopting this package,
1:24 we'd be in big trouble. Speaking of the package, here we go, Jinja Partials.
1:29 So this package Jinja Partials, which I created specifically for this course, as well as I
1:34 just realized this problem is not being solved in Jinja or Chameleon or Django templates. All the places, that really should be solved better.
1:43 So I created this package specifically for Jinja. Notice right under the title there, it says there's also a Pyramid/Chameleon version.
1:50 So if you're using Chameleon, you're not left out. We're going to use this Jinja partial package to make our code much cleaner and have
1:59 it defined one time, not in multiple places, in our Flask plus htmx web app.