用途:为 Frappe/ERPNext 的打印格式、邮件模板、通知模板和门户页面编写 Jinja 模板,适用 v14/v15/v16;不适用于报表打印格式(使用 JavaScript 模板 {%= %})、客户端脚本和服务端脚本。
主要能力:覆盖 Jinja 基本语法({{ }} 输出、{% %} 控制、{# #} 注释、{{ _("text") }} 翻译、管道过滤器);按模板类型说明上下文对象,如打印格式的 doc、frappe、frappe.utils,门户页面的 frappe.session.user、frappe.form_dict、frappe.lang 与 get_context(context) 自定义上下文;提供格式化(doc.get_formatted、frappe.format)、文档读取(get_doc、frappe.db.get_value、frappe.get_all、frappe.get_list)、条件与循环(loop.index、loop.first、loop.last)、过滤器(default、length、join、truncate、escape、safe、round)等用法。
使用方式:在 hooks.py 的 jenv 中注册自定义方法/过滤器模块(myapp.jinja.methods、myapp.jinja.filters);打印格式用 Jinja 编写并按需设置分页样式(v14/v15 用 page-break-before,v16 推荐 break-before);门户页面使用 www/*.html 配合 .py 控制器,模板继承 templates/web.html 并定义 page_content 块。
限制与规则:所有面向用户的字符串应使用 _() 翻译;金额、日期、数字用 get_formatted(),子表行需传入父文档;可选字段用 default();单字段查询优先 frappe.db.get_value;不要在循环中执行数据库查询;不要对用户输入使用 | safe;不得在报表打印格式中使用 Jinja;不要未经安全审查禁用 safe_render。资料未提供具体收费、价格或平台信息。