Golang:.Scan() 忽略类型 template.HTML

所以现在 .Scan() 没有接受类型 template.HTML; 它完全忽略它并且不向 HTML 输出任何内容。这是我坚持和不确定的一件事。


如果我将它作为字符串传递它可以工作,但 HTML 输出为转义字符


<h2>metus congue

如果有一个替代解决方案,那将是整洁的。


代码是一个单页机 - 整页:http ://pastebin.com/E4jXiv6p


结构


type Pages struct {

    Name        string

    Url         string

    Title       string

    Description string

    H1          string

    Hero        string

    Contents    template.HTML

    Sidebar     string

    Page_list   [][]string

}

查询页面


func db_query_pages(db *sql.DB, err error, page_list [][]string) {


    var name, url, title, description, h1, hero, sidebar string


    var contents template.HTML


    rows, err := db.Query("SELECT * FROM pages")


    for rows.Next() {


        rows.Scan(&name, &url, &title, &description, &h1, &hero, &contents, &sidebar)


        page := &Pages{


            Name:        name,

            Url:         url,

            Title:       title,

            Description: description,

            H1:          h1,

            Hero:        hero,

            Contents:    contents,

            Sidebar:     sidebar,

            Page_list:   page_list,

        }


        render_page(page)


    }


}

渲染页面


func render_page(new_page *Pages) {


    http.HandleFunc(new_page.Url,

        func(w http.ResponseWriter, r *http.Request) {


            templates.ExecuteTemplate(w, "main", new_page)


        })


}

HTML


{{define "content"}}


    <h1>{{.H1}}</h1>


    <img class="margin-bottom-md block common-border padding-md" src="{{.Hero}}">


    {{.Contents}}


{{end}}


开心每一天1111
浏览 206回答 1
1回答

郎朗坤

你不能 Marshal 或 Unamrshal an&nbsp;html.Template.您需要在数据库中存储对模板名称、原始模板数据或呈现的 html 的引用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go