A compatibility add-on for askama to support many different web frameworks.
E.g. if you are using axum, then add askama_web with
the feature "axum-0.8" to your Cargo.toml:
[dependencies]
askama_web = { version = "0.12.0", features = ["axum-0.8"] }Then just add #[derive(WebTemplate)] to your Askama templated struct or enum:
use askama::Template;
use askama_web::WebTemplate;
use axum::Router;
use axum::routing::get;
#[derive(Template, WebTemplate)]
#[template(path = "hello.html")]
struct HelloTemplate {
name: String,
}
async fn hello() -> HelloTemplate {
HelloTemplate {
name: "world".to_string(),
}
}
let app = Router::new().route("/", get(hello));By selecting the feature "axum-0.8", HelloTemplate will implement axum::response::IntoResponse.
The user will receive a "Status: 200", "Content-Type: text/html; charset=utf-8"
response with the rendered struct as body.
These web frameworks are currently implemented and can be selected with their respective feature flag:
"actix-web-4": implementsResponderfor actix-web in version 4"axum-0.8"/"axum-core-0.5": implementsIntoResponsefor axum in version 0.8 / axum-core in version 0.5"poem-3": implementsIntoResponsefor poem in version 3.x"rocket-0.5": implementsResponderfor rocket in version 0.5"salvo-0.77"/"salvo_core-0.77": implementsScribefor salvo in version 0.77 / salvo_core in version 0.77"trillium-0.2": implementsHandlerfor trillium in version 0.2"viz-0.10"/"viz-core-0.10": implementsIntoResponsefor viz in version 0.10 / viz-core in version 0.10"warp-0.3": implementsReplyfor warp in version 0.3
As well as these logging / debugging facilities to print error messages if a template could not be rendered:
"eprintln": using rust's built-ineprintln!()macro"log-0.4": using log as logging framework"tracing-0.1": using tracing as logging framework
Some older versions are implemented, too:
"axum-0.7"/"axum-core-0.4": implementsIntoResponsefor axum in version 0.7 / axum-core in version 0.4"salvo-0.76"/"salvo_core-0.76": implementsScribefor salvo in version 0.76 / salvo_core in version 0.76
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.