DEV Community

vindarel
vindarel

Posted on

Common Lisp HTML templates: using Djula in .lisp files

;;;
;;; How to use Djula templates in-file, without separate file templates.
;;;
;;; This can make it easier to ship your app as a single binary.
;;; Otherwise, see
;;; https://lisp-journey.gitlab.io/blog/lisp-for-the-web-build-standalone-binaries-foreign-libraries-templates-static-assets/#embed-html-djula-templates-in-your-binary
;;;
;;; We use two Djula functions:
;;; - compile-string
;;; - render-template*
;;;
;;;

#++
(ql:quickload '("djula" "pythonic-string-reader"))

(pythonic-string-reader:enable-pythonic-string-syntax)

(defparameter *template-hello* """
{% if foo %}
 foo is true
{% else %}
 foo is false
{% endif %}
""")

(defun render (s &rest keys)
  (apply
   #'djula:render-template*
   (djula:compile-string s)
   nil
   ;; key arguments:
   keys
   ))

#++
(render *template-hello* :foo t)
;; =>
" foo is true "
Enter fullscreen mode Exit fullscreen mode

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more