用途:在 Rust 中编写 Askama 模板时提供指导,确保使用符合习惯的写法,并通过理解模块作用域来修复编译错误,避免常见反模式。
主要能力:Askama 模板在构建期编译为 Rust 代码,模板与 #[derive(Template)] 所在模块共享作用域,该模块中可见的内容均可在模板中使用。技能按需加载参考文档:学习模板语法、条件、循环、match 时加载 references/template-syntax.md;遇到“method not found”或“type not found”错误、或想把类型转成 String 来绕过错误时加载 references/scope-debugging.md;使用或创建过滤器及 safe 过滤器时加载 references/filters.md;使用 extends、blocks、includes 时加载 references/inheritance.md;为 HTMX hx-swap 渲染 HTML 片段时加载 references/htmx-partials.md。
核心原则:模板即 Rust 代码,应调用类型方法、利用 Display 实现、用 {% match %} 做模式匹配,不要在 Rust 中预先计算字符串;模块作用域决定可见性,方法找不到通常是提供该方法的 trait 未导入,应修复导入而非转成 String;保留富类型,传入领域类型而非字符串化版本;编译期安全,模板错误在 cargo build 时暴露;渲染前校验,safe 过滤器绕过转义,仅用于自己控制的内容,绝不用于用户输入。
反模式提醒:不要为修复“method not found”而把类型转成 String;不要使用 Jinja2 的 {% elif %},应使用 {% else if %};不要对用户可控数据使用 safe 过滤器;枚举应使用 {% match %} 而非 if/else;不要把所有内容预先格式化;宏共享调用方 Template 结构体所在模块的作用域;不要对模板字段抑制 dead_code,若触发说明字段确实未使用。
限制:资料未提供安装命令、版本要求、收费或平台信息。