Revel视图文件必须存于app/views/下并严格按控制器名大小写嵌套,文件名与方法名完全一致且小写、.html后缀;多级包需同步路径层级;布局文件仅识别首字母大写的Layout.html。

在Revel框架中正确创建和命名视图文件,是确保模板能被控制器精准加载、避免404错误或渲染失败的前提。若命名不遵循约定,即使逻辑完全正确,【Revel将无法自动定位到对应视图】,且不会报错提示具体路径问题,只返回空白页或默认错误页。
视图文件的标准位置与目录结构
Revel强制要求所有视图文件必须存放在 app/views/ 目录下,且需严格按控制器分组嵌套。例如,若控制器为 app/controllers/HomeController.go,其对应视图必须位于 app/views/Home/ 子目录中。
不能把视图文件直接丢进 app/views/ 根目录——Revel会忽略它;也不能擅自改成 app/views/home/(小写),因为控制器类名首字母大写,路径也必须大小写一致。
项目启动后,Revel会扫描 app/views/ 下所有以控制器名命名的子目录,每个子目录即为一个视图命名空间。
视图文件命名规则
视图文件名必须与控制器中的方法名完全一致,且全部小写,后缀为 .html。
例如:控制器中定义了 func (c App) Dashboard() revel.Result,则对应视图文件必须命名为 app/views/App/Dashboard.html。
注意:方法名是 Dashboard,但文件名必须是 Dashboard.html,不是 dashboard.html,也不是 Dashboard.tpl 或 Dashboard.gohtml——Revel只识别 .html 后缀,且区分大小写。
多级控制器路径下的视图定位
当控制器位于子包时,如 app/controllers/admin/UserController.go,其视图路径需同步反映包层级:
① 控制器全限定名为 admin.UserController,因此视图根目录为 app/views/admin/;
② 方法 UserList() 对应的视图路径是 app/views/admin/User/UserList.html;
③ 若控制器定义在 app/controllers/api/v2/PostController.go,则视图必须放在 app/views/api/v2/Post/ 下,文件名为 Index.html 或 Create.html 等,不可省略 v2 这一层目录。
遗漏任一中间目录层级,Revel在运行时将完全找不到该视图,且日志中仅显示“template not found”,不会指出缺失的是哪一级路径。
嵌套视图与布局复用
Revel支持通过 {{yield}} 实现布局复用,但布局文件本身也需遵守命名约定:
方法一:全局布局文件统一放在 app/views/ 根目录,命名为 Layout.html。所有子视图可通过 {{set .layout "Layout.html"}} 显式指定,或由控制器 c.RenderArgs["layout"] = "Layout.html" 注入。
方法二:局部布局可存于对应控制器视图目录内,例如 app/views/Admin/Layout.html,此时仅 Admin/* 下的视图能直接引用 "Layout.html",无需带路径前缀。
【切勿将布局文件命名为 layout.html 或 LAYOUT.HTML】——Revel对文件名大小写敏感,仅识别首字母大写的 Layout.html 作为默认布局标识符。


















