杭州--4.14

1.r.Form["usernam"]返回的是一個包含值數組 r.FormValue("username")返回的纔是值
所以在goweb中,進行登錄驗證時,需要用後者來取出數據!


2.在使用row.Scan(&u)之前需要用for row.Next()


3. t,_ := template.ParseFiles("index.html")
t.Execute(w,nil)


4.在寫form的action的時候,要注意如果寫"127.0.0.1:8080/login"是不對的,應該寫成"http://127.0.0.1:8080/login"
寫成"/login"也可以


5.blog_beego中,修改了main文件以後,需要重啓git


6.blog_beego中,如果沒寫this.TplName,那麼beego會默認跳轉到controller名/請求方法.tpl,如:
logincontroller/post.tpl


7.blog_goweb和blog_beego的比較
  註冊數據庫:goweb在main.go中,引入 _"github.com/go-sql-driver/mysql"和"database/sql"
然後再sql.Open("mysql","adress")
     beego是在main.go中,引入 _"github.com/go-sql-driver"和"github.com/astaxie/beego/orm"
然後在main.go的init中orm.RegisterDatabase(aliasName,"mysql",adress,30),在
model.go的init中orm.RegisterModel(new(User))
  從前端獲取數據--post:
      goweb進入action和method決定的方法,然後通過r.FormValue("username")
    beego進入action和method決定的方法,通過this.GetString("username")
總結:get方法一般用於查看數據
  對前端數據進行處理:
查詢操作:
goweb將數據作爲與數據庫交互的參數,db.Query(sql,param)
beego將數據作爲model函數的參數,o.Raw()
總結:sql語句主要由這些從前端獲取的數據決定
增,刪,改:
goweb通過db.Prepare(),stmt.Exec(),res.LastInsetId或者res.RowsAffected
beego通過o.Raw(sql).Exec()
  對新數據處理:goweb通過db.Query獲得數據行,再用for rows.Next{var id int;rows.Scan(&id)}
beego通過o.Raw(sql).QurtyRow(&user)
  前端頁面引用新數據之前的準備:
情形1:前端頁面需要展示的是非循環型數據
解決:goweb中,需要一個類似this.Data的存儲器,還未知。beego中,將sql結果賦值到結構體中,再將結構體變量加入
this.Data["name"]=user.Name中,前端{{.name}}。測試一下{{.user.Name}}
情形2:前端頁面需要展示的是循環數據
解決:goweb中,未知。beego中,創建一個以結構體爲元素的切片,將sql語句結果
賦值。加入到this.Data中,在前端頁面用{{range $key,$val := .list}}遍歷,再用
  {{$val.Name}}注入前端頁面
情形3:前端頁面需要展示的是循環數據,且某些字段不存在於數據庫中
解決:sql語句取得數據以後,for key,_ := range userli{
if userli[key].Age>18
userli[key].Op="查看"}
發佈了44 篇原創文章 · 獲贊 0 · 訪問量 9234
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章