草庐IT

fno-implicit-templates

全部标签

go - html/template 中 ParseFiles 函数的不同行为

我不明白为什么func(t*Template)Parsefiles(...与funcParseFiles(...的行为不同。这两个函数都来自“html/模板”包。packageexampleimport("html/template""io/ioutil""testing")funcMakeTemplate1(pathstring)*template.Template{returntemplate.Must(template.ParseFiles(path))}funcMakeTemplate2(pathstring)*template.Template{returntemplate.

templates - 在 Go 模板中请求上下文

我想在Go中编写这样一个条件片段HTMLtemplate:{{ifisUserAdmin}}Gotothebigrednuclearbutton{{end}}但是,这不是直接可能的,因为模板不知道request触发了它的执行,所以它无法确定用户是否是管理员。是否有一些正常的方法可以实现这一点?我提前指出:我不想使用Pipelines对于此特定数据(请参阅otherquestion关于此)我承认只有处理程序/Controller应该处理逻辑,而View应该只进行渲染。但是条件{{ifisUserAdmin}}本身并不是逻辑,它是利用Controller已经计算出的bool值的必要结构。F

go - 将 template.HTML 直接渲染到模板中

我最近更换了数据存储,作为副作用,我不得不将结构字段从template.HTML更改为string以与marshaller/兼容数据库驱动程序。此字段RenderedDesc包含通过russross/blackfriday传递的呈现的HTML.以前我可以将整个结构“按原样”传递到模板中,然后在模板中调用{{.RenderedDesc}}。因为它现在是一个字符串,所以我添加了一个过滤器以在模板渲染时将其转换回:templates.gofuncRenderUnsafe(sstring)template.HTML{returntemplate.HTML(s)}template.FuncMap

templates - 有没有办法列出使用过的变量?

假设我有一个基本的go文本/模板:{{.var}}isanother{{.var2}}我想获取模板中使用的变量名称的数组,以便能够在我传递给执行的数据中不可用时跳过执行,是否可以通过某种方式做到这一点?因为我的数据不是结构而是映射,所以执行.var总是会返回一些东西:如果它不存在,当我希望在执行模板时出现错误时它会返回一个空字符串。所以对于上面的例子,我希望得到:[varvar2] 最佳答案 如果未设置值,请使用返回错误的模板函数。像这样:template.FuncMap(map[string]interface{}{"requir

go - 如何使用text/template预定义的 "call"函数?

我试图了解如何在text/template包中使用call函数。这是示例:typeHumanstruct{Namestring}func(h*Human)Say(strstring)string{returnstr}funcmain(){constletter=`{{.Name}}wantstosay{{"blabla"|.Say}}{{.Name}}wantstryagain,{{call.Say"blabla"}}.`varh=&Human{"Tim"}t:=template.Must(template.New("").Parse(letter))err:=t.Execute(os

templates - text/html 模板包中的 "range"操作和 "pipeline"说明。戈朗

我试图在text/html模板包中获得一些优点。我已经从golang站点阅读了它的文档。很难理解.(点)在一般和一定时间范围内行动。“pipeline”到底是什么意思,可能因为我的英文不是母语,所以比较难理解):{{pipeline}}Thedefaulttextualrepresentationofthevalueofthepipelineiscopiedtotheoutput.让我们考虑一个例子:data:=map[string]interface{}{"struct":&Order{ID:1,CustID:2,Total:3.65,Name:"Something",},"name

templates - Golang 模板和有效字段测试

在Go的database/sql包中,有一堆Null[Type]结构可以帮助将数据库值(及其可能的空值)映射到代码中。我试图弄清楚如何测试结构field是否为null,或者换句话说,当它的Valid属性为false时。打印SQL字段的推荐方法是使用.Value属性,如下所示:{{.MyStruct.MyField.Value}}效果很好。但假设我有一些稍微复杂的东西,我需要根据其他东西来测试值,例如:{{range.SomeSlice}}{{.}}{{end}}碰巧,这也很有效,除非.MyField无效,在这种情况下我会收到错误消息“调用eq时出错:用于比较的类型无效”。该错误是有道理

http - Golang使用 "template"包生成动态网页给客户端耗时太长

使用template包生成动态网页给客户端时太慢了。测试代码如下,golang1.4.1http.Handle("/js/",(http.FileServer(http.Dir(webpath))))http.Handle("/css/",(http.FileServer(http.Dir(webpath))))http.Handle("/img/",(http.FileServer(http.Dir(webpath))))http.HandleFunc("/test",TestHandler)funcTestHandler(whttp.ResponseWriter,r*http.Re

templates - 如何在 Go 模板中解析超出范围的变量?

我有如下两个结构,我需要使用templates在模板上呈现数据盒。我得到这个错误:EmailisnotafieldofstructtypeNotes.问题似乎是范围循环中似乎只有范围结构的字段可用,所以我想知道如何从范围结构外部(例如电子邮件字符串)导入字段。该行为非常出乎意料。typenotesstruct{Notestringsfstring}typeuisstruct{notes[]NoteEmailstring}varuiuisHTML{{range.notes}}{{.Email}}{{.sf}}{{end}}Email{{.Email}}我检查了godocs,但它们似乎毫无

templates - 戈朗。如何使用 html/template 包创建循环函数

我正在尝试将循环实现为自定义函数。它需要迭代次数和大括号之间的内容,然后它应该迭代括号之间的内容n次。请看例子:ma​​in.gotemplate.Must(template.ParseFiles("palette.html")).Funcs(template.FuncMap{"loop":func(nint,contentstring)string{varrstringfori:=0;iindex.html{{define"index"}}{{loop16}}{{end}}{{end}}输出...16times是否可以实现?其动机是text/template的标准功能不允许仅在大括号