杭州--4.14

来源:互联网 发布:网络代销商 编辑:程序博客网 时间:2024/04/29 17:56
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="查看"}
0 0
原创粉丝点击