9个不稳定版本
使用旧的Rust 2015
0.5.0 | 2018年4月19日 |
---|---|
0.4.0 | 2017年6月30日 |
0.3.0 | 2017年4月23日 |
0.2.0 | 2017年2月3日 |
0.1.1 | 2016年12月28日 |
#301 in 模板引擎
每月 39 次下载
17KB
203 行
iron-tera
在创建初始模板引擎后,您可以使用Tera Context
或实现了serde的Serialize
的值在给定的处理器中渲染模板。
不稳定
fn main() {
let mut router = Router::new();
router.get("/user", user_handler, "user");
router.get("/usertest", produce_handler, "usertest");
let mut chain = Chain::new(router);
let teng = TeraEngine::new("src/examples/templates/**/*");
chain.link_after(teng);
Iron::new(chain).http("localhost:5000").unwrap();
}
fn user_handler(_: &mut Request) -> IronResult<Response> {
let mut resp = Response::new();
let mut context = Context::new();
context.add("username", &"Bob");
context.add("my_var", &"Thing");
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)
}
// this uses the unstable feature on nightly
fn produce_handler(_: &mut Request) -> IronResult<Response> {
let mut resp = Response::new();
let user = User {
username: "Bob",
my_var: "Thing",
numbers: &vec![1, 2, 3],
bio: "<script>alert('pwnd');</script>",
};
match serde_json::to_value(user) {
Ok(u) => match Template::new("users/profile.html", u) {
Ok(t) => {
resp.set_mut(t).set_mut(status::Ok);
Ok(resp)
}
Err(_) => Err(IronError::new(
StringError("Template Error".to_string()),
status::BadRequest,
)),
},
Err(_) => Err(IronError::new(
StringError("Serialization error".to_string()),
status::BadRequest,
)),
}
}
稳定
fn main() {
let mut router = Router::new();
router.get("/user", user_handler, "user");
router.get("/usertest", produce_handler, "usertest");
router.get("/blob", blob_handler, "blobtest");
let mut chain = Chain::new(router);
let teng = TeraEngine::new("src/examples/templates/**/*");
chain.link_after(teng);
Iron::new(chain).http("localhost:5000").unwrap();
}
fn user_handler(_: &mut Request) -> IronResult<Response> {
let mut resp = Response::new();
let mut context = Context::new();
context.add("username", &"Bob");
context.add("my_var", &"Thing"); // comment out to see alternate thing
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)
}
// this uses the unstable feature on nightly
fn produce_handler(_: &mut Request) -> IronResult<Response> {
let mut resp = Response::new();
let user = User {
username: "Bob",
my_var: "Thing",
numbers: &vec![1, 2, 3],
bio: "<script>alert('pwnd');</script>",
};
match serde_json::to_value(user) {
Ok(u) => {
resp.set_mut(Template::new("users/profile.html", u))
.set_mut(status::Ok);
Ok(resp)
}
Err(_) => Err(IronError::new(
StringError("Serialization error".to_string()),
status::BadRequest,
)),
}
}
依赖关系
~17MB
~344K SLoC