登录
首页 >  Golang >  Go问答

子目录下的 HTML 模板无法被 Gin 使用

来源:stackoverflow

时间:2024-02-15 19:27:23 489浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《子目录下的 HTML 模板无法被 Gin 使用》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

我在使用 go gin 框架加载 html 文件时遇到问题 当我从主函数加载整个模板文件夹时,它不读取子目录,只读取文件。

打包应用程序

import (
    "github.com/gin-gonic/gin"
)

var (
    router = gin.default()
)

func startapp() {
    router.loadhtmlglob("templates/*/*.html")
    routersmap()
    router.run(":8080")

}

根据项目结构,它应该将加载的 html 模板显示为

[gin-debug] loaded html templates (2): 
    - layouts/default.html
    - layouts/index.html
    - pages/index.html

但实际上输出显示了这个结果

[GIN-debug] Loaded HTML Templates (3):
        - default.html
        - index.html
        -

它甚至没有显示第二个index.html文件

项目结构


正确答案


我也在努力学习 go 和使用 gin。

我也遇到过这个问题,并遇到了一些我解决的小问题。 我将把它留在这里,以防其他人看到。

文件夹布局:

.
├── controllers
│   ├── controller.go
│   └── gui.go
├── html
│   └── templates
│       ├── homepage
│       │   └── index.html
│       ├── layouts
│       │   ├── footer.html
│       │   ├── header.html
│       │   └── menu.html
│       └── views
│           └── library.html
├── models
│   ├── bookstruct.go
│   └── dbconnection.go
├── server.go
└── test
    └── server_test.go

可能需要的部分是这些文件:

  • server.go
  • gui.go
  • library.html

gui.go

package controllers

import (
    "net/http"

    "github.com/gin-gonic/gin"
)
...

// booksview display book library
func booksview(c *gin.context) {
    c.html(
        http.statusok,
        "views/library.html",
        gin.h{"title": "books"},
    )
}

library.html

{{ define "views/library.html" }}
<!--embed the header.html template at this location-->
{{ template "layouts/header.html" .}}

<h1>hello books!</h1>

<div>est nisi debitis recusandae necessitatibus voluptate ut. laudantium eligendi nostrum quisquam voluptates harum
    exercitationem nam harum. voluptatem sit assumenda sit alias dolores. modi autem et temporibus impedit qui numquam.
    esse ut recusandae quos deserunt nihil repellendus. sint et voluptatem quia quia dolor aut.</div>

<div>est nisi debitis recusandae necessitatibus voluptate ut. laudantium eligendi nostrum quisquam voluptates harum
    exercitationem nam harum. voluptatem sit assumenda sit alias dolores. modi autem et temporibus impedit qui numquam.
    esse ut recusandae quos deserunt nihil repellendus. sint et voluptatem quia quia dolor aut.</div>

<!--embed the footer.html template at this location-->
{{ template "layouts/footer.html" .}}
{{ end }}

server.go

import (
    c "go_first_api/sub_packages/gormrestapi/controllers"
    m "go_first_api/sub_packages/gormrestapi/models"

    "github.com/gin-gonic/gin"
    "github.com/rs/zerolog"
)

// RunServer will run and create a server using gin
func RunServer() {
    ...
    r := gin.Default()
    r.LoadHTMLGlob("sub_packages/gormrestapi/html/templates/**/*")
    r.GET("/library", c.BooksView)
    ...

    r.Run(":8088")
}

注意: main.go 位于文件夹路径中此子目录的上方。

今天关于《子目录下的 HTML 模板无法被 Gin 使用》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>