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

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

如何執行模板

如何執行模板

Go
叮當貓咪 2022-09-19 17:20:00
在此代碼中,我正在嘗試執行函數中存在的 。tmpl.ExecuteTemplate(res, "about.html", d)showAbout()在文件中,我有兩個函數。第一個是,第二個是。 函數檢查授權,授權成功后,進入具有if語句的函數。handler.goshowAbout()about()about()showAbout()如果數據庫中的 about 字段為空,則應執行 ,獲取數據并將其插入到數據庫中。aboutform.html如果數據已成功插入,則顯示消息并返回以在此處顯示數據。about.html只有不執行。盡管給出了成功消息。about.html關于.html<section>   <h1>About</h1>   <hr>   <p>{{.Aboutdata}}</p></section>關于形式.html<form action="/about" method="POST">    <section>        <label>Content</label>        <textarea name="content"></textarea>        <div>            <input type="submit" value="Submit">        </div>    </section></form>數據庫func Insertdata(key, value string) bool {    collection := Connect.Database("webApp3").Collection("data")    filter := bson.M{"email": Account.Email, "password": Account.Password}    update := bson.M{        "$set": bson.M{            key: value,        },    }    _, err := collection.UpdateOne(context.TODO(), filter, update)    return err == nil}處理程序.gofunc showAbout(res http.ResponseWriter, req *http.Request) {    d := struct{ Aboutdata string }{Aboutdata: database.Account.About}    if d.Aboutdata == "" {        tmpl.ExecuteTemplate(res, "aboutform.html", nil)        content := req.FormValue("content")        inserted := database.Insertdata("about", content)        if inserted == true {            fmt.Println("About is successfully inserted")            tmpl.ExecuteTemplate(res, "about.html", d)   // It is not executing the about.html file        } else {            fmt.Println("About is not inserted")        }    } else {        tmpl.ExecuteTemplate(res, "about.html", d)    // Although this same file is executing here.    }}
查看完整描述

1 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

下面是你的關于處理程序的外觀示例。請記住,該示例只是使用單個處理程序處理 GET 和 POST 請求的通用結構的圖示。據我所知,您問題中的代碼包含許多其他邏輯錯誤,您仍然需要解決這些錯誤。


請注意,呈現模板和處理數據輸入的邏輯在 GET 和 POST HTTP 方法之間拆分。某些路由器允許基于方法的處理程序注冊,在這種情況下,您可以有兩個單獨的處理程序,一個用于,另一個用于或某物。showAboutcreateAbout


考慮到塊的結構,此示例中的語句的使用是不必要的,但是,我確實包含它們以明確說明,一般來說,一旦您寫入響應,您就不應該有任何其他響應寫入代碼:no ,不再調用等。returnif-elsehttp.RedirectExecuteTemplate


func handleAbout(w http.ResponseWriter, r *http.Request) {

    if r.Method == "GET" {

         if data_is_present {

             if err := t.ExecuteTemplate(w, "about.html", nil); err != nil {

                 fmt.Println(err)

             }

             return

         } else if data_is_NOT_present {

             if err := t.ExecuteTemplate(w, "aboutform.html", nil); err != nil {

                 fmt.Println(err)

             }

             return

         }

    } else if r.Method == "POST" {

        content := r.FormValue("content")

        inserted := database.Insertdata("about", content)

        if inserted == true {

            d := struct{ Aboutdata string }{Aboutdata: content}

            if err := t.ExecuteTemplate(w, "about.html", d); err != nil {

                fmt.Println(err)

            }

            return

        } else {

            fmt.Println("About is not inserted")

            return

        }

    }

}


查看完整回答
反對 回復 2022-09-19
  • 1 回答
  • 0 關注
  • 74 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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