Frappe Web Forms 用于在 Frappe 中搭建面向外部用户(无 Desk 访问权限)的公开表单,实现数据收集、提交与客户自助服务。典型用途包括:支持/工单提交表单、客户反馈或注册收集、自助数据录入门户,以及用表单化流程替代简单门户页面。
主要能力与使用方式:先在地址栏输入 "new web form" 创建表单,填写标题(作为 URL slug)、选择用于创建记录的 DocType、可选填写引导文字,通过 "Get Fields" 导入字段或手动添加,设置字段顺序与必填项,然后发布表单。可配置选项包括 Login Required、Allow Edit、Allow Multiple、Show as Card、Max Attachment Size、Success URL、Success Message。在 Developer Mode 下勾选 "Is Standard",可将表单导出为应用文件(web_form/<slug>/ 下的 .json、.py、.js)。
服务端与客户端定制:在 .py 文件中用 get_context(context) 添加上下文变量,用 validate(doc) 在保存前做校验;在 .js 文件中用 frappe.ready、frappe.web_form.on、frappe.web_form.validate、frappe.web_form.after_save 实现字段联动、自定义校验与提交后行为。权限可通过 Login Required、门户角色、目标 DocType 的 User Permission 与行级访问规则控制;样式可借助网站主题或在 Custom CSS 字段中覆盖。
限制与注意事项:需先在服务端做校验,不能只信任客户端校验;公开表单建议启用 reCAPTCHA 防刷;展示用户数据需转义;应限制附件大小与类型并考虑提交速率限制。常见问题包括 DocType 权限未授予导致提交被拒、字段未加入 Web Form 而不显示、自定义 JS 路径错误、未发布导致 404、仅客户端校验导致脏数据、未以访客身份测试。