cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk tidak menanggalkan komen HTML dalam templat HTML dalam gin gonic

Saya menggunakan Gin Gonic dan fail templat HTML.

Fail templat saya mengandungi (berbilang baris) komen HTML yang serupa dengan <!--Ini ulasan saya -->. Saya ingin mengekalkan kandungan HTML dalam output yang dikembalikan.

c.HTML(http.StatusOK, "static/templates/mytemplate.html", gin.H{
    "name": "World",
})

Soalan: Bagaimana untuk mengkonfigurasi enjin templat atau c.HTML untuk tidak menanggalkan ulasan HTML dalam templat?

Jawapan yang lebih terperinci

/static/templates/mytemplate.html:

<!DOCTYPE html>
<html lang="de">
<body>
<!--
这些行在输出中缺失。
-->
Hello World
</body>
</html>

Pengendali saya:

func NewRouter() *gin.Engine {
    router := gin.Default()
    // ... load templates from file system ...
    router.GET("/foo", fooHandler)
    return router
}
func fooHandler(c *gin.Context) {
    c.HTML(http.StatusOK, "static/templates/mytemplate.html", gin.H{
        "name": "World",
    })
}

Selepas mengedit, saya cuba menambah anotasi sebagai pemalar :

{{"<!-- my comment goes here -->"}}

tetapi tag itu terlepas sebagai

<!-- foo --> 


P粉193307465P粉193307465525 hari yang lalu662

membalas semua(1)saya akan balas

  • P粉237029457

    P粉2370294572023-07-19 16:31:03

    Saya rasa sebab komen HTML dialih keluar adalah kerana saya membaca templat HTML sebagai rentetan (bukannya terus sebagai fail). Punca sebenar masih tidak dapat ditentukan. Bagaimanapun, penyelesaian yang berkesan untuk saya ialah menggunakan ruang letak dalam templat.

    <!DOCTYPE html>
    <html lang="de">
    <body>
    {{ .myComment }}
    Hello World
    </body>
    </html>
    

    dan hantar komen HTML itu sendiri sebagai parameter:

    const myHtmlComment string = `
    <!--
    these lines are (not) missing (anymore) in the output
    -->
    `
    func fooHandler(c *gin.Context) {
        c.HTML(http.StatusOK, "static/templates/mytemplate.html", gin.H{
            "name": "World",
            "myComment": template.HTML(myHtmlComment),
        })
    }
    

    Gunakan import "html/template" untuk mengimport

    balas
    0
  • Batalbalas