SuperAPI AI 工具集

erpnext-syntax-jinja

写作与研究

查看项目

更新于 10-15 22:17

技能介绍

用途:在 ERPNext/Frappe v14/v15/v16 中编写打印格式(Print Format)、邮件模板(Email Template)和门户页面(www/*.html)的 Jinja 模板。不适用于报表打印格式(使用 JavaScript 模板)、客户端脚本和服务端脚本。

主要能力:按模板类型说明可用上下文对象,如打印格式的 doc、frappe、_(),邮件模板的 doc、frappe,门户页面的 frappe.session.user、frappe.form_dict、frappe.lang 及 Python 控制器注入的自定义上下文。介绍常用方法:用 doc.get_formatted("posting_date") 格式化字段,子表行用 row.get_formatted("rate", doc);用 frappe.get_doc、frappe.db.get_value、frappe.get_all 取数;用 _() 翻译面向用户的字符串。涵盖条件、循环及 loop.index/first/last/length 等循环变量,以及 default、length、join、truncate、safe 等过滤器。还说明通过 hooks.py 的 jenv 配置自定义方法与过滤器,并给出打印格式、邮件模板、门户页面加控制器的示例结构。

使用方式:在对应模板中按上述语法编写;自定义方法在 hooks.py 中配置 jenv = {"methods": [...], "filters": [...]}。

限制与注意:始终用 _() 翻译用户可见文本,用 get_formatted() 处理货币/日期,用 default 兜底;不要在循环中查询(N+1),不要对用户输入用 | safe(XSS 风险),不要在模板中做重计算,报表打印格式不要用 Jinja。v16 改用 Chrome PDF 渲染,CSS 支持更完整,page-break-* 建议改为 break-*,可在 site_config.json 配置 pdf_engine 与 chrome_path。具体版本兼容细节以资料为准。