V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
vinsec
V2EX  ›  Go 编程语言

求助 Golang 如何渲染已有模板但不直接返回呢

  •  1
     
  •   vinsec · 2020-02-20 13:04:47 +08:00 · 1933 次点击
    这是一个创建于 1757 天前的主题,其中的信息可能已经有所发展或是发生改变。
    func Render_(tmp string,ins Instance)[]byte{
    	// tmp 为已定义模板的路径 如 "templates/http.tmpl"
            tpl,err := template.ParseFiles(tmp)
    	
            if err != nil{
    		log.Fatal(err)
    	}
    	
    	data := ins
    	var buf bytes.Buffer
    	if err := tpl.ExecuteTemplate(&buf,tmp,data); err != nil {
    		log.Fatal(err)
    	}
    	return []byte(buf.String())
    	//fmt.Println(buf.String())
    
    }
    

    传入的 ins 对象包括三个属性,装载到已有的模板中,模板里的待渲染的变量是这 3 个的子集(有些模板有 1 个 有些有 2 个)。 请问用原生 template 库该如何实现呢 我上面写的好像实现不了 报 “templates/http.tmpl” undefied

    2 条回复    2020-02-26 14:48:05 +08:00
    wangsongyan
        1
    wangsongyan  
       2020-02-21 09:35:30 +08:00
    ExecuteTemplate,第二个参数是模板文件名,传"http.tmpl"

    https://gist.github.com/wangsongyan/f9e187b8f5a7933d5c61d0dab68c56db
    vinsec
        2
    vinsec  
    OP
       2020-02-26 14:48:05 +08:00
    @wangsongyan 我测了下 ExecuteTemplate 的第二个参数确切来说应该是模板里的 {{define "form"}} 里的"form",ParseFiles 这里才是模板绝对路径。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4544 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:45 · PVG 17:45 · LAX 01:45 · JFK 04:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.