为了账号安全,请及时绑定邮箱和手机立即绑定

html 模板中的内容被模板的文件位置替换,而不是所需的文本

html 模板中的内容被模板的文件位置替换,而不是所需的文本

Go
BIG阳 2021-08-10 20:31:01
我正在使用 html/template 包在提交表单时提供模板。作为该模板副本的页面正在使用模板文件的位置而不是应替换 {{ .Title }} 的文本呈现所以在 response.html 中,{{ .Title }} 显示为“Projects/Go/src/web/site/index”而不是“我觉得是”如何将 {{ .Title }} 替换为文本而不是文件位置?这是我的代码:package mainimport (    "fmt"    "net/http"    "github.com/zenazn/goji"    "github.com/zenazn/goji/web"    "html/template"    "io/ioutil")type Page struct {    Title string    Body []byte}func loadPage(title string) (*Page, error){    filename := title + ".html"    body, err := ioutil.ReadFile(filename)    if err != nil{       return nil, err    }    return &Page{Title: title, Body: body}, nil } func renderTemplate(w http.ResponseWriter, tmpl string, p *Page){     t, err := template.ParseFiles(tmpl + ".html") if err != nil{     panic(err) } err = t.Execute(w, p)     fmt.Println(err)}func response(c web.C, w http.ResponseWriter, r *http.Request){    p, err := loadPage("Projects/Go/src/web/site/index")    if err != nil{        p = &Page{Title: "I feel that is "}        panic(err)    }    renderTemplate(w, "Projects/Go/src/web/site/response", p)}func serveSingle(filename string) func(w http.ResponseWriter, r *http.Request) {     return func(w http.ResponseWriter, r *http.Request) {         http.ServeFile(w, r, filename)     }} func main() {     goji.Get("/", serveSingle("Projects/Go/src/web/site/index.html"))     goji.Handle("/ask", response)     goji.Serve()}
查看完整描述

1 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

您的loadPage()函数设置Page.Title为文件路径,.html默认情况下减去扩展名。


您只覆盖在你的默认行为response()功能时err != nil。您还可以p使用该行完全覆盖变量,p = &Page{Title: "I feel that is "}而不仅仅是Title在现有Page.


你应该尝试改变:


func response(c web.C, w http.ResponseWriter, r *http.Request){


    p, err := loadPage("Projects/Go/src/web/site/index")

    if err != nil{

        p = &Page{Title: "I feel that is "}

        panic(err)

    }

    renderTemplate(w, "Projects/Go/src/web/site/response", p)

}

到:


func response(c web.C, w http.ResponseWriter, r *http.Request){


    p, err := loadPage("Projects/Go/src/web/site/index")

    if err != nil{

        panic(err)

    }

    p.Title = "I feel that is "

    renderTemplate(w, "Projects/Go/src/web/site/response", p)

}


查看完整回答
反对 回复 2021-08-10
  • 1 回答
  • 0 关注
  • 250 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号