69.讓某個欄位使用html的表現力
當我們在構建豐富的web頁面的時候,除了預定義好的頁面可以使用模板檔案來實現,還有一種情況是經常遇到的。那就是,某一部分內容,我想使用html程式碼來表現一下。比如一篇圖文混排還有多個段落的新聞內容,甚至裡面有幾個字還想換個不同的顏色和字號來強調一下。
這樣的情況,對應到web後臺來說,一般就是富文字編輯器編輯好的內容了。
這個內容當然常常是在一條記錄中獨佔一個欄位的。
如果這個欄位的內容在客端表現的時候,需要把欄位的型別定義成 template.HTML
就像這樣
type News struct { NTitlestring//標題 NAuthor string//作者 NPublishstring//釋出時間 NContenttemplate.HTML//內容 NAttachment string//附件 NKeywordstring//關鍵字 NTabstring//標籤 NClassstring//分類 } func Joeltemplate11(writer http.ResponseWriter, request *http.Request) { var RNTitle = request.FormValue("NTitle") var RNAuthor = request.FormValue("NAuthor") var RNPublish = request.FormValue("NPublish") var RNContent = request.FormValue("NContent") var RNAttachment = request.FormValue("NAttachment") var RNKeyword = request.FormValue("NKeyword") var RNTab = request.FormValue("NTab") var RNClass = request.FormValue("NClass") myNews := News{} myNews.NTitle = RNTitle myNews.NAuthor = RNAuthor myNews.NPublish = RNPublish myNews.NContent = template.HTML(RNContent) myNews.NAttachment = RNAttachment myNews.NKeyword = RNKeyword myNews.NTab = RNTab myNews.NClass = RNClass t, _ := template.ParseFiles("./JoelTemplate/sayHelloNews.html") t.ExecuteTemplate(writer, "news", myNews) }
{{define "news"}} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>News</title> </head> <body> News <hr> 標題:{{.NTitle}}<br> 作者:{{.NAuthor}}<br> 釋出時間:{{.NPublish}}<br> 內容:{{.NContent }}<br> 附件:{{.NAttachment}}<br> 關鍵字:{{.NKeyword}}<br> 標籤:{{.NTab}}<br> 分類:{{.NClass}}<br> <hr> <form action="" method="post"> <table> <tr> <td>標題:</td> <td><input id="NTitle" name="NTitle" value=""></td> </tr> <tr> <td>作者:</td> <td><input id="NAuthor" name="NAuthor" value=""></td> </tr> <tr> <td>釋出時間:</td> <td><input id="NPublish" name="NPublish" value=""></td> </tr> <tr> <td>內容:</td> <td><textarea id="NContent" name="NContent" rows="5" cols="80" >{{.NContent }}</textarea></td> </tr> <tr> <td>附件:</td> <td><input id="NAttachment" name="NAttachment" value=""></td> </tr> <tr> <td>關鍵字:</td> <td><input id="NKeyword" name="NKeyword" value=""></td> </tr> <tr> <td>標籤:</td> <td><input id="NTab" name="NTab" value=""></td> </tr> <tr> <td>分類:</td> <td><input id="NClass" name="NClass" value=""></td> </tr> <tr> <td></td> <td><input id="NSubmit" type="submit" value="提交"/></td> </tr> </table> </form> </body> </html> {{end}}
這是一個新聞的結構,其中“內容”要展現出各種豐富的表現形式(圖片、文字、音視訊檔案、連結等),所以它的型別被定義為 template.HTML
前端的表現就可以是這樣的了

內容直接是html程式碼,並被直接在頁面上應用了
好了,利用這個方法,你可以隨意構建頁面了。