djc / askama

Type-safe, compiled Jinja-like templates for Rust
Apache License 2.0
3.43k stars 218 forks source link

Dynamic rendering mode #491

Open est31 opened 3 years ago

est31 commented 3 years ago

Inspired by concerns voiced in this comment that askama has a bad edit cycle because it involves recompilation each time. Ideally, to solve this, one could have a second rendering engine that runs during runtime. See also @djc 's response in the thread.

djc commented 3 years ago

See also #389, #273.

acceleratesage commented 1 year ago

This is something that I'd be interested in for another use case: I'd like to use the same template engine for static and dynamic parts of a web site. While the dynamic parts are fine to be statically compiled into a new binary, static parts should just be able to be generated by running a cmd tool and not involve compilation.

djc commented 1 year ago

See also #425 for more discussion of potential designs and a bunch of workarounds. We should really probably coalesce all of these issues into a single one. Anyway, something that's not changed is that I'm mostly unlikely to start work on solving this. That said, now that askama_parser is available as a standalone crate (on main only for now) this might make things like this easier.

kellpossible commented 1 year ago

One use case which I haven't seen mentioned here yet is the ability to override templates at runtime to allow user customizable templates

djc commented 8 months ago

Folks interested in this issue might like @rdbo's dynja, which uses minijinja for the debug profile and Askama for the release profile.

zys864 commented 3 months ago

Is there a way to compile the template at runtime?e.g. compile a template from sql,then use it to render html?

djc commented 3 months ago

No, Askama's code generator generates Rust code and I don't think there are any good ways of compiling and then executing Rust code at runtime. You might have better luck with something like Tera (although if you just want to make templates depend on your SQL schema that sounds like it could be solved with code generation).