新 `Gopher`,用 `Gin` 框架中碰到一些小疑问,已 `Google` 勿喷。
## 问题描述
使用 `Gin` 加载不同文件夹下的 `index.html` 的一点疑惑,怎么加载不同文件夹下的 `index.html` 文件。
文件结构:
```html
.
├── main.go
└── templates
├── home
│ └── index.html
└── login
└── index.html
```
其中 `templates/home/index.html` 内容为:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home Title</title>
</head>
<body>
<h1>This is Home page</h1>
</body>
</html>
```
文件 `templates/login/index.html` 内容为:
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login Title</title>
</head>
<body>
<h1>This is login page</h1>
</body>
</html>
```
主函数 `main.go` 文件为:
```golang
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func LoginPage(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{})
}
func HomePage(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{})
}
func main() {
router := gin.Default()
router.LoadHTMLGlob("templates/**/*")
router.GET("/login", LoginPage)
router.GET("/home", HomePage)
router.Run(":8088")
}
```
发现访问 `URL` 地址 `/login` 和 `/home` 得到相同内容:
![issue.png](https://is.golangtc.com/upload/image/6a61a92fac6611e99c202e1a8e6a359d.png)
这是终端的打印信息:
![issue - 2.png](https://is.golangtc.com/upload/image/89b5d49fac6611e99c202e1a8e6a359d.png)
**希望解决的问题是:怎么样访问不同文件夹下的 `index.html` 文件**。
有试过改 `main.go` 里面的对应函数,没有成功
```
func LoginPage(c *gin.Context) {
// 之前 c.HTML(http.StatusOK, "index.html", gin.H{})
// 之后:
c.HTML(http.StatusOK, "login/index.html", gin.H{})
}
func IndexPage(c *gin.Context) {
// 之前 c.HTML(http.StatusOK, "index.html", gin.H{})
// 之后:
c.HTML(http.StatusOK, "home/index.html", gin.H{})
}
```
Using templates with same name in different directories
```go
func main() {
router := gin.Default()
router.LoadHTMLGlob("templates/**/*")
router.GET("/posts/index", func(c *gin.Context) {
c.HTML(http.StatusOK, "posts/index.tmpl", gin.H{
"title": "Posts",
})
})
router.GET("/users/index", func(c *gin.Context) {
c.HTML(http.StatusOK, "users/index.tmpl", gin.H{
"title": "Users",
})
})
router.Run(":8080")
}
```
#1
更多评论