Semantic Dates in Wagtail Blog Posts


(Written because I couldn't find an easy guide online.)

Here's the code (formatted for readability):

<time datetime="{{page.first_published_at|date:"c"}}">
   {{page.first_published_at|date:"j F Y"}}
</time>

You can also use last_published_at if it is a page which has been updated.

WHY?!??!

Semantics. HTML5 contains the <time> element. The contents of it show up as normal running text, but the metadata gives information to anything that reads the source-code that the text relates to a date.

It's fairly easy to tell that <p>3rd of May</p> is a date - well, it's only easy if you know that you're only ever looking for English text formatted a specific way.

For example, does <p>3/5</p> mean three-fifth, or does it mean 3rd of May? Or, are you American, and it means 5th of March?

So, we can use a <time> element with the datetime= metadata. The datetime tag takes an ISO8601 string.

Luckily, we don't have to write it out by hand. Django has a built-in template for that.

Hey presto! Your blog posts now contain machine-readable data about when they were published.


Share this post on…

  • Mastodon
  • Facebook
  • LinkedIn
  • BlueSky
  • Threads
  • Reddit
  • HackerNews
  • Lobsters
  • WhatsApp
  • Telegram

What are your reckons?

All comments are moderated and may not be published immediately. Your email address will not be published.

Allowed HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <p> <pre> <br> <img src="" alt="" title="" srcset="">