域名 AXUM.RS 将于 2025 年 10 月到期。我们无意再对其进行续费,如果你有意接续这个域名,请与我们取得联系。
  • AXUM.RS 现仅需人民币 3000 元(大写:叁仟元整。接受适度议价
  • 按照行业规则,AXUM.RS 到期后,大概率会进入长时间的赎回期,该期间内,如果你想拥有该域名,将要付出高额的费用
  • 我们已启用 AXUM.EU.ORG 域名,并将持续运营
  • 仅接受微信或支付宝交易
如果你对 AXUM.RS 有兴趣,请和我们进行联系:

axum 中使用模板引擎

利用模板引擎,我们不需要再把 HTML 代码写在 Rust 代码中了,而是将其独立保存为*.html文件。既方便维护,也有利用开发。

创建模板文件

首先,我们在项目根目录创建一个templates目录,并在这个目录创建一个index.html文件,内容如下:

其中的 {{ name }} 是模板引擎的指令,用于将变量等数据显示在页面上。

创建模板对应的结构体

#[derive(Template)]
#[template(path = "index.html")]
pub struct IndexTemplate {
    pub name: String,
}

其中

  • #[derive(Template)]:是让我们的结构体实现 askama::Template,这样就可以方便调用模板的方法。

  • #[template(path = "index.html")]:指定关联的模板文件。 askama 默认会去项目根目录的 templates/ 目录下查找指定的模板文件。

#[derive(Template)]:是让我们的结构体实现 askama::Template,这样就可以方便调用模板的方法。

#[template(path = "index.html")]:指定关联的模板文件。 askama 默认会去项目根目录的 templates/ 目录下查找指定的模板文件。

使用模板

async fn index() -> Result<Html<String>, String> {
    let name = String::from("axum中文网");
    let tpl = IndexTemplate { name };
    let html = tpl.render().map_err(|err| err.to_string())?;
    Ok(Html(html))
}

过滤器

askama 提供了一些实用的过滤器,比如 safe:直接显示 HTML 代码,而不是显示转义过后的代码。更多过滤器,你可以在这里找到。

要查看完整内容,请先登录