SuperAPI AI 工具集

server-scripts

编程与开发

查看项目

更新于 10-16 04:09

技能介绍

Frappe Server Scripts Reference 是 Frappe 框架服务端 Python 开发的完整参考。

用途 用于在 Frappe 框架中进行服务端 Python 开发,常见场景包括:编写文档控制器、创建白名单 API 端点、处理文档生命周期事件、后台任务处理、数据库操作与查询、权限检查与校验、以及邮件与通知处理。

控制器位置 控制器文件位于应用模块的 doctype 目录下:my_app/my_module/doctype/my_doctype/my_doctype.py。

文档控制器 资料提供了完整的控制器模板,按阶段划分方法:

  • 命名:autoname、before_naming
  • 校验:before_validate、validate、before_save
  • 插入:before_insert、after_insert
  • 更新:on_update、after_save、on_change
  • 提交:before_submit、on_submit、on_update_after_submit
  • 取消:before_cancel、on_cancel
  • 删除:before_delete、after_delete、on_trash、after_restore 自定义方法示例包括 set_defaults、validate_dates、validate_amounts、calculate_totals、set_status、is_completed,演示使用 frappe.throw 抛出校验错误、使用 flt/nowdate 等工具函数、计算行项目金额与总计等。

白名单 API 资料给出多种写法:

  • 基础 API:使用 @frappe.whitelist() 装饰器,示例 get_customer_details、create_invoice,返回字典或单据名,使用 frappe.parse_json 解析 JSON 参数。
  • Guest API:@frappe.whitelist(allow_guest=True) 允许无需登录访问。
  • 方法限制:@frappe.whitelist(methods=["POST"]) 或 ["GET","POST"]。
  • 权限检查:在接口内调用 frappe.has_permission 检查权限,不通过时以 frappe.PermissionError 抛出错误。

数据库操作 读取数据示例:frappe.get_doc、frappe.db.get_value(支持多字段 as_dict)、frappe.db.get_all(支持 filters、fields、order_by、limit、pluck、复杂过滤条件如 in、>、>=、like)、frappe.db.count、frappe.db.exists。 原生 SQL 示例:frappe.db.sql 使用位置参数、命名参数、聚合查询,并以 as_dict 返回。 写入数据示例:创建文档并 insert、更新并 save、使用 frappe.db.set_value 快速更新、frappe.delete_doc 删除、frappe.db.commit 提交、frappe.db.rollback 回滚。

后台任务 使用 frappe.enqueue 入队:可指定 method、queue(short/default/long)、timeout、is_async、job_name、now、enqueue_after_commit 以及任务参数。任务函数示例展示 frappe.init、frappe.connect、frappe.destroy 与 frappe.db.commit 的使用,并在异常时调用 frappe.log_error。 定时任务通过 hooks.py 的 scheduler_events 配置,支持 all、daily、hourly 及 cron 表达式。

错误处理与工具函数 错误处理支持 frappe.throw(可带标题与异常类型)、frappe.msgprint 提示、frappe.log_error 记录日志与 frappe.get_traceback,以及 try-except 结构。工具函数涵盖日期(nowdate、getdate、add_days、get_last_day 等)、数值(flt、cint)、格式化(fmt_money)、当前用户与角色(frappe.session.user、frappe.get_roles)。

邮件与通知 frappe.sendmail 支持收件人、主题、正文、模板与参数、reference_doctype/reference_name;frappe.publish_realtime 用于实时通知。

文档事件(Hooks) 通过 hooks.py 的 doc_events 将指定 DocType 的事件映射到应用中的函数,示例函数签名采用 (doc, method),支持通配符 "*" 对所有文档生效,可用于校验、提交与取消逻辑。

限制与缺失信息 资料未提供安装命令、收费、价格、平台支持范围或效果数据,这些内容暂未提供。