用途:在 Frappe 中创建面向外部用户的公开网页表单,用于数据收集、提交和客户自助服务,无需 Desk 访问权限。适用于外部用户表单、支持/工单提交、客户反馈或注册、自助数据录入门户,以及用表单工作流替代简单门户页面。
主要能力:在 awesomebar 输入 "new web form" 创建表单,填写标题(成为 URL slug)、选择目标 DocType、添加介绍文字,通过 "Get Fields" 导入字段或手动添加,设置字段顺序与必填项后发布。可配置登录要求、允许编辑、允许多次提交、卡片布局、最大附件大小、成功 URL 与成功消息。勾选 "Is Standard"(开发者模式可见)可将表单导出为应用文件,包含 .json 元数据、.py 服务端定制和 .js 客户端定制。
使用方式:服务端在 .py 中定义 get_context(context) 添加上下文变量、validate(doc) 做保存前校验;客户端在 .js 中用 frappe.ready 绑定 field_change、自定义 validate 与 after_save。权限方面,取消 "Login Required" 可开放访客访问,也可分配门户角色、设置文档级权限和 User Permission 行级规则。样式默认使用网站主题,可通过 Custom CSS 字段自定义。
限制与注意:必须服务端校验输入,公开表单建议启用 reCAPTCHA 防垃圾提交,显示用户数据时用 frappe.utils.escape_html() 转义,限制附件大小与类型,考虑对同一 IP 限流。常见问题包括缺少 DocType 权限导致提交被拒、未处理文件上传、XSS 风险、忘记发布导致 404、仅客户端校验、未以访客身份测试。表单不可访问时检查是否已发布及 URL slug;字段不显示时确认字段已加入 Web Form 而非仅在 DocType 上。