Comment by giancarlostoro

2 months ago

Template partials look good, which is one of the key reasons frameworks like React are as good and popular as they are, because you can reuse small segments of code.

Key benefit for reusability and composability in React is IMHO that they don't use templates at all, but everything is a function.

  • Exactly. There are a few libraries to achieve a similar thing in Python:

    * https://htpy.dev/

    * https://pypi.org/project/fast_html/

    * https://fastht.ml/ (different to above, I think)

    * https://github.com/volfpeter/fasthx

    Probably others. I strongly prefer this to templating, but I find it makes dyed in the wool Django people squirm.

    • I like this approach. I am especially drawn to the idea of making custom components this way but every time I have experimented with this I get burned by the context which has to be passed down through all functions.

      A jinja/django template has an implicit context but for nested functions you really have to pass that context down through every function call.

      It inevitably ends up just a big dict blob.

      You get some typing support in an IDE but nothing really for function parameters.

      Maybe I am doing wrong?

      1 reply →

    • iommi is wroth mentioning here. It is different from an HTML generator, but one of the things it does is greatly reduce the amount of HTML you need write.

    • There are a lot of cool things about these, one that they are less typo prone and also they are often much faster.

      The downside is I find them hard to read.

      I think the template approach isn't quite right and yet neither is the functional approach.

      At the end of the day these are a type of tree structure; I think we could conjure a new mechanism that gets the best of most/both worlds.

      2 replies →

React allows for encapsulation of state in a reusable component, its more than just templating.

  • React also requires you to know the long list of do's and dont's and is littered with minefields that most average developers are not even aware of.

    Everyone just busts out "React" for every small thing, but few commit to actually learning this pretty complicated technology.

    The last two recent Cloudflare outages were because of React.

But you could already reuse templates in Django by including them. What am I missing?

  • Partialdef inline is the real win. Lets you define parts of a page without needing to place them in another file. Reduces the mental overhead of imagining how the inclusion will look because it’s already there.

    The use case is mainly driven by htmx where you will have lots of these partials and the view code renders them as individual responses.

  • It's just syntactic sugar, making life a bit easier for HTMX users (cf. "htmx was the main motivation for this feature").

    I'm using Unpoly and I just render the whole page and let Unpoly swap the content according to the target selectors, so no need for this. Not much difference in perf if you dont generate gigantic pages with heavy header/footer.

indeed the vintage templating was a logical bottleneck