• skip to sidebar
  • skip to search box

trainedmonkey

by Jim Winstead Jr.

Entries tagged 'twig'

Is this Twig or Jinja? Maybe both!

A project I have been playing around with the last couple of weekends has been making a Python version of this site. The code, which is very rough because I barely know what I’m doing and I’m in the hacking-it-together phase as opposed to trying to make it pretty, is in this GitHub repository.

I am using the Flask framework with SQLAlchemy and Jinja.

I was interested to see if I could just use the same templates as my PHP version, which uses Twig, but there have been a few sticking points:

  1. The Twig escape filter takes an argument to more finely control the context it is being used in so it knows how to escape within HTML, or a URI, or an HTML attribute. Jinja’s escape doesn’t take an argument. I was able to override it take an extra argument, but mostly ignore it for now.
  2. Jinja doesn’t have Twig’s ternary ?: operator. Not surprising, Python doesn’t either. I rewrote those bits of templates to use slightly more verbose if blocks.
  3. Jinja doesn’t have Twig’s string comparators like matches and starts with. Looks like I can get rid of the need for them, but I just punted on those for now.
  4. Jinja doesn’t have a block() function. I think I can also avoid needing it.
  5. Jinja’s url_for() method expects a more Python-ic argument list, like url_for('route', var = 'value') but Twig uses a dictionary like url_for('route', { 'var' : 'value' }). I was able to override Jinja’s version to handle this, too.
  6. I’ll need to implement versions of Twig’s date() function and filter.

I had cobbled together a way on the Twig side to let me store some templates (side navigation, the “Hire me!” message on the front page) in the database, so my next trick is going to implement template loaders for both the PHP and Python versions so that is more cleanly abstracted. I have the Python side of that done already.

I hope to eventually create a Rust version of this, too, and it will be interesting to see what new complications using Tera will bring.

» Saturday, June 15, 2024 @ 8:17pm » code, blogging, fads, python, talapoin, twig, Rust, SQLAlchemy, Flask, Jinja, Tera » Bluesky butterfly logo » Comment

the state of things

just over seven years ago, i mentioned that i had decided to switch over to using scat, the point of sale software that i had been knocking together in my spare time. it happened, and we have been using it while i continue to work on it in that copious spare time. the project page says “it is currently a very rough work-in-progress and not suitable for use by anyone.” and that's still true. perhaps even more true. (and absolutely true if you include the online store component.)

it is currently a frankenstein monster as i am (slowly) transforming it from an old-school php application to being built on the slim framework. i am using twig for templating, and using idiorm and paris as a database abstraction thing.

i am using docker containers for some things, but i have very mixed emotions about it. i started doing that because i was doing development on my macbook pro (15-inch early 2008) which is stuck on el capitan, but found it convenient to keep using them once i transitioned to doing development on the same local server where i'm running our production instance.

the way that docker gets stdout and stderr wrong constantly vexes me. (there may be reasonable technical reasons for it.)

i have been reading jamie zawinski’s blog for a very long time. all the way back to when it was on live journal, and also the blog for dna lounge, the nightclub he owns. the most recent post about writing his own user account system to the club website sounded very familiar.

» Monday, May 20, 2019 @ 10:23pm » code, business, life, scat, slim framework, twig, docker » Comment
  • Home
  • About
  • Archive
  • Bookmarks
  • Photos
  • Projects
  • GitHub
  • @jimw@mefi.social

Dedicated to the public domain by Jim Winstead Jr.