Revel模板重命名必须严格匹配控制器方法名、大小写、目录层级和.html后缀。如Dashboard()对应app/views/Dashboard/Dashboard.html;子包admin.UserController的UserList()需app/views/admin/User/UserList.html;Layout.html是唯一可放根目录的例外,但不可重命名。

Revel模板文件重命名必须严格匹配控制器方法名
Revel不会自动推导或容错模板路径,重命名不是“改个名字就行”,而是要和控制器方法签名完全对齐。一旦不一致,页面就空白,且日志只报“template not found”,不提示具体哪一级路径错了。
- 控制器方法名为
Dashboard,对应模板文件名必须是Dashboard.html,不能是dashboard.html、Dashboard.tpl或index.html - 大小写敏感:若控制器是
AppController,视图目录必须是app/views/App/,不是app/views/app/ - 后缀强制为
.html——Revel 0.19.0 及之后版本不识别.gohtml或其他扩展名
多级包路径下重命名需同步补全中间目录
控制器在子包(如 admin/UserController.go)时,仅改文件名不够,还必须确保目录层级完整。漏掉任一环节,Revel 就找不到模板,且不报错细节。
- 控制器全限定名是
admin.UserController→ 视图根目录必须是app/views/admin/ - 其中方法
UserList()→ 模板路径必须是app/views/admin/User/UserList.html - 若控制器在
api/v2/PostController.go,则必须有v2这一级目录:app/views/api/v2/Post/Index.html
重命名后不生效?先检查这三处硬性约束
常见“改了但没用”的问题,基本都卡在这三个地方,而不是模板语法或缓存问题。
-
app/views/是唯一合法的模板根目录——把Dashboard.html直接扔进app/views/根目录,Revel 会彻底忽略它 - 控制器方法必须是公开方法(首字母大写),如
func (c App) Dashboard();若写成dashboard()(小写),Revel 不会注册该路由,自然也找不到模板 - 项目重启是必须的:Revel 在启动时扫描
app/views/目录并构建模板映射表,重命名后不重启,旧映射仍生效
Layout.html 的命名例外与位置限制
全局布局文件 Layout.html 是唯一允许放在 app/views/ 根目录的模板,但它不参与控制器方法名匹配,只被 {{yield}} 引用。这个例外容易让人误以为其他模板也能放根目录。
-
Layout.html必须位于app/views/Layout.html,不能放在app/views/App/Layout.html或其他子目录 - 它不继承控制器命名规则,但一旦重命名(如改成
MainLayout.html),所有{{template "Layout.html" .}}调用都会失效,且无提示 - 若多个控制器共用同一份布局,不要试图靠重命名来区分——应统一用
Layout.html,通过.CurrentController或RenderArgs控制内部逻辑分支
重命名的本质不是编辑文件名,而是维护控制器、路径、文件名三者之间大小写精确、层级完整、后缀固定的三角关系。最容易被忽略的是:**中间目录层级缺失比文件名拼错更难排查,因为错误现象完全一样,但日志不指出缺哪一层。**
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











