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

如何在GO,Google App Engine中解析HTML模板

如何在GO,Google App Engine中解析HTML模板

Go
浮云间 2021-05-14 22:27:08
我正在尝试使用Google App Engine在GO中创建一个页面,该页面可以显示带有HTML解析的数组的内容。    package helloimport (    "fmt"    "html/template"    "net/http")func init() {    http.HandleFunc("/", root)}const TemplateHTML = `<html>  <body>   <table width="700"  border="1" align="center">  <tr>    <td>    {{range}} {{.name}} {{end}} {{range}} {{.Count}} {{end}}</td>  </tr></table>  </body></html>`func root(w http.ResponseWriter, r *http.Request) {    type variables struct {        Name    string        Count   int    }    var data = []variables{        {"John", 25},        {"George", 35},        {"NoName", 27},    }    //name := variables{"Somebody", 25}    tmpl, err := template.New("i").Parse(TemplateHTML)    if err != nil {         fmt.Fprint(w, err)    }    err = tmpl.Execute(w, data)    if err != nil {         fmt.Fprint(w, err)    }}但是我只收到一个内部服务器错误。当我使用err = tmpl.Execute(w, name)(可以在代码的注释中找到“名称”)时,就可以了。您知道可能是什么问题吗?我是golang的新手。
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

其他人将给出更简洁/准确的答案,但是使上述示例起作用的一种简单方法是将data声明更改为:


var data = []variables{

    variables{"John", 25},

    variables{"George", 35},

    variables{"NoName", 27},

}

在这里,您正在制作datatype切片的每个元素,这些元素variables将与variables定义中的类型匹配。我认为这是当前版本的主要问题-未提供正确的数据类型data。然后,您只需要调整模板,以使字符串如下所示:


const TemplateHTML = `

<html>

  <body>

   <table width="700"  border="1" align="center">

    {{range .}}

    <tr>

      <td>{{.Name}}</td><td>{{.Count}}</td>

    </tr>

    {{end}}

  </tr>

</table>


  </body>

</html>

`

此处的主要更改是:使.Name大写字母与属性名称匹配,然后将其包装tr在{{range .}}块中,以便为每个条目创建一个新行(我假设这就是您要查找的内容,否则请确保range包含任何动态内容你要)。


查看完整回答
反对 回复 2021-05-24
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

如果template.Parse返回错误,则不能使用它返回的其他值。如果模板执行失败,您将尝试调用tmpl.Executenil tmpl,这将导致恐慌。


查看完整回答
反对 回复 2021-05-24
  • 2 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信