亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang http模板變量不起作用

golang http模板變量不起作用

Go
炎炎設計 2022-06-01 16:46:15
我正在嘗試在 Go 中使用 http 模板來呈現列表中網頁上特定文件夾中的所有文件。每個文件或文件夾也應該鏈接到它各自的路徑。我已經閱讀了文件夾中的所有項目并將它們保存到這些結構中type Item struct {    Name     string          IsFolder bool            Info     os.FileInfo }// Items contains a slice of all items in a foldertype Items struct {    Parent string     Items  []Item }然后將其傳遞給 template.ExecuteTemplate 函數。有問題的模板如下所示:<html><head>    <title>website</title></head><body>    <h1>Welcome to my website</h1>    <p>Files in {{.Parent}}</p>    <ul>        <li><a href="ftp?f={{ .Parent }}">{{.Parent}}</a></li>        {{range .Items}} {{if .IsFolder}}        <li><a href="ftp?f={{ .Parent }}/{{ .Name }}">{{ .Name }}</a></li>        {{else}}        <li><a href="ftp?f={{ .Parent }}/{{ .Name }}">{{.Name}}</a></li>        {{end}} {{end}}    </ul></body></html>然而,我的問題是,在加載頁面時,唯一返回的是開始直到<li><a href="ftp?f={{ .Parent }}/{{ .Name }}">{{ .Name }}</a></li>它在 ?f= 之后立即停止,我之前只使用 {{ .Name }} 對其進行了測試,并且效果非常好,當然,除了鏈接不會去任何地方。在上面的列表位置渲染 {{ .Parent }} 絕對可以。如果我只是刪除 /,它也不起作用,這會產生完全相同的問題。當然,我的問題是為什么會發生這種情況以及我將如何解決它。附言。你可能會注意到一個小的安全漏洞,如果你把 ../ 放在 ftp?f= 字段中,你會沿著文件樹往上走。是的,我知道這一點,我會嘗試解決這個問題。如果您對如何解決該問題有任何建議,也可以告訴我:)
查看完整描述

2 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

{{range .Items}}匹配之后{{end}},模板運行時將上下文設置為循環變量,即Item. AnItem沒有父母。您可以使用 $: use{{$.Parent}}來訪問全局上下文。



查看完整回答
反對 回復 2022-06-01
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

在您的循環內,.是 current Item,并且由于沒有Item.Parent字段,因此.Parent循環中沒有。



查看完整回答
反對 回復 2022-06-01
  • 2 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號