You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Askama implements a template rendering engine based on Jinja,
and generates type-safe Rust code from your templates at compile time
based on a user-defined struct to hold the template's context.
At some point, Askama got forked into Rinja (explained here)
before getting merged back into Askama.
All feedback welcome! Feel free to file bugs, requests for documentation and
any other feedback to the issue tracker.
You can find the documentation about our syntax, features, configuration in our book:
askama.readthedocs.io.
Have a look at our Askama Playground,
if you want to try out askama's code generation online.
Feature highlights
Construct templates using a familiar, easy-to-use syntax
Benefit from the safety provided by Rust's type system
Template code is compiled into your crate for optimal performance
Debugging features to assist you in template development
Templates must be valid UTF-8 and produce UTF-8 when rendered
Works on stable Rust
Supported in templates
Template inheritance
Loops, if/else statements and include support
Macro support
Variables (no mutability allowed)
Some built-in filters, and the ability to use your own
Whitespace suppressing with '-' markers
Opt-out HTML escaping
Syntax customization
How to get started
First, add the askama dependency to your crate's Cargo.toml:
cargo add askama
Now create a directory called templates in your crate root.
In it, create a file called hello.html, containing the following:
Hello, {{ name }}!
In any Rust file inside your crate, add the following:
use askama::Template;// bring trait in scope#[derive(Template)]// this will generate the code...#[template(path = "hello.html")]// using the template in this path, relative// to the `templates` dir in the crate rootstructHelloTemplate<'a>{// the name of the struct can be anythingname:&'astr,// the field name should match the variable name// in your template}fnmain(){let hello = HelloTemplate{name:"world"};// instantiate your structprintln!("{}", hello.render().unwrap());// then render it.}
You should now be able to compile and run this code.
About
A template rendering engine based on Jinja, generating type-safe Rust code at compile time.