Keats / tera

A template engine for Rust based on Jinja2/Django
http://keats.github.io/tera/
MIT License
3.36k stars 280 forks source link

How to use in the template has . variables #918

Open YanHeDoki opened 2 months ago

YanHeDoki commented 2 months ago

Like a structured context with an ip address as the key


use tera::{Context, Tera};

#[derive(Serialize)]
struct Device {
    pub device_ip: String,
    pub description: String,
}

fn main() {
    let raw_template = r#"
            info:{{10.0.0.1.description}}
        "#;

    let device = Device {
        device_ip: "10.0.0.1".into(),
        description: "Default device".into(),
    };

    let mut t = Tera::default();
    t.add_raw_template("template1", raw_template).unwrap();

    let mut context = Context::new();

    context.insert(&device.device_ip, &device);

    let res = t.render("template1", &context).unwrap();

    println!("{:?}", res)
}

burst out in error: `Error { kind: Msg("Failed to parse 'template1'"), source: Some(Error { kind: Msg(" --> 2:24\n  |\n2 |             info:{{10.0.0.1.description}}\n  |                        ^---\n 
 |\n  = expected `or`, `and`, `not`, `<=`, `>=`, `<`, `>`, `==`, `!=`, `+`, `-`, `*`, `/`, `%`, a filter, or a variable end (`}}`)"), source: None }) } `