Crate iron_tera [−] [src]
Examples
extern crate iron_tera; use iron_tera::{TeraEngine, Template, TemplateMode}; fn main() { let mut router = Router::new(); router.get("/user", user_handler, "user"); let mut chain = Chain::new(router); // TeraEngine will panic here if parsing fails, it's part of the Tera library let teng = TeraEngine::new("src/examples/templates/**/*"); chain.link_after(teng); Iron::new(chain).http("localhost:5000").unwrap(); } // Rendering a template from a context. fn user_handler(_: &mut Request) -> IronResult<Response> { let mut resp = Response::new(); let mut context = Context::new(); context.add("username", &"Bob"); context.add("numbers", &vec![1, 2, 3]); context.add("bio", &"<script>alert('pwnd');</script>"); resp.set_mut(Template::new("users/profile.html", TemplateMode::from_context(context))) .set_mut(status::Ok); Ok(resp) } // The following uses serde's Serialize #[derive(Serialize)] struct Product { name: String, value: i32, } // Rendering from a struct that implements Serialize fn produce_handler(_: &mut Request) -> IronResult<Response> { let mut resp = Response::new(); // Using serialized values let product = Product { name: "Foo".into(), value: 42, }; resp.set_mut(Template::new("product.html", TemplateMode::from_serial(&product))) .set_mut(status::Ok); Ok(resp) }
Structs
Template |
Our template holds a name (path to template) and a mode (constructed with |
TeraEngine |
TeraEngine holds the Tera struct so that it can be used by many handlers without explicitly passing |
Enums
TemplateMode |
There are 2 main ways to pass data to generate a template. |