beego——flash數據

這個flash與 Adobe/Macromedia Flash沒有任何關係,它主要用於在兩個邏輯間傳遞臨時數據html

flash中存放的全部數據會在緊接着的下一個邏輯中調用後清除函數

通常用於傳遞提示和錯誤消息。它適合 Post/Redirect/Get 模式。code

下面看使用的例子:orm

// 顯示設置信息
func (c *MainController) Get() {
    flash:=beego.ReadFromRequest(&c.Controller)
    if n,ok:=flash.Data["notice"];ok{
        // 顯示設置成功
        c.TplName = "set_success.html"
    }else if n,ok=flash.Data["error"];ok{
        // 顯示錯誤
        c.TplName = "set_error.html"
    }else{
        // 否則默認顯示設置頁面
        c.Data["list"]=GetInfo()
        c.TplName = "setting_list.html"
    }
}

// 處理設置信息
func (c *MainController) Post() {
    flash:=beego.NewFlash()
    setting:=Settings{}
    valid := Validation{}
    c.ParseForm(&setting)
    if b, err := valid.Valid(setting);err!=nil {
        flash.Error("Settings invalid!")
        flash.Store(&c.Controller)
        c.Redirect("/setting",302)
        return
    }else if b!=nil{
        flash.Error("validation err!")
        flash.Store(&c.Controller)
        c.Redirect("/setting",302)
        return
    }
    saveSetting(setting)
    flash.Notice("Settings saved!")
    flash.Store(&c.Controller)
    c.Redirect("/setting",302)
}

上面的代碼執行的大概邏輯是這樣的:htm

  1. Get 方法執行,由於沒有 flash 數據,因此顯示設置頁面。
  2. 用戶設置信息以後點擊遞交,執行 Post,而後初始化一個 flash,經過驗證,驗證出錯或者驗證不經過設置 flash 的錯誤,若是經過了就保存設置,而後設置 flash 成功設置的信息。
  3. 設置完成後跳轉到 Get 請求。
  4. Get 請求獲取到了 Flash 信息,而後執行相應的邏輯,若是出錯顯示出錯的頁面,若是成功顯示成功的頁面。

默認狀況下 ReadFromRequest 函數已經實現了讀取的數據賦值給 flash,因此在你的模板裏面你能夠這樣讀取數據:對象

{{.flash.error}}
{{.flash.warning}}
{{.flash.notice}}

flash 對象有三個級別的設置:blog

  • Notice 提示信息
  • Warning 警告信息
  • Error 錯誤信息
相關文章
相關標籤/搜索