beego记录1(边写边记)

1.在conf/app.conf中添加一行EnableAdmin=true,我们就可以在localhost:8088监控界面
这里写图片描述

2.四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET 用来获取资源,POST 用来新建资源(也可以用于更新资源),PUT 用来更新资源,DELETE 用来删除资源。
3.

统计数据总数
r:=new(User2)
total,_ :=db.Engine.Count(r)
or
total,_ :=db.Engine.Where("id>?",1).Count(r)

按id,password等输出(models)
for _,v:=range user{
    fmt.Print(v.Id)
    fmt.Print(v.Password)
}

4.xorm工具生成struct

xorm reverse postgres "host=ip port=5432 user=postgres password=xxx dbname=xxx xxxsslmode=disable" F:/go/src/github.com/go-xorm/cmd/xorm/templates/goxorm

注意:此句中的空格为一个,不可多加,否则出错

5.beego的session(仅用于beego)

func (c *Logindd) Post(){
    sess:=c.StartSession()
    sess.Set("username",username)//建立session
}
func (c *Logindd) Get(){
    sess:=c.StartSession()
    sess.Get("username",username)//获取session
    sess.Delete("username")//删除session
}

6.获取其他网页的cookie值

resp,err2:=http.Get("http://dlnemployee.deepmatrix.cn/check_code")
if err2 !=nil{
    c.Ctx.Redirect(302,"404.html")
}
defer resp.Body.Close()
body,_:= ioutil.ReadAll(resp.Body)
for _, c := range resp.Cookies() {
    fmt.Print(c.Name)//__session__
    fmt.Print(c.Value)//__session__的值
}

这里写图片描述

7.post请求,传递body值

session_check:=sess.Get("__session__")//获取cookie值
zhuan:="__session__="+session_check.(string)
var clust=url.Values{}
clust.Set("code",yan)
clust.Set("psw",pwd)
clust.Set("usernum",username)
fmt.Println(clust)
data1:=clust.Encode()
postBytes:=[]byte(data1)//字符串转为二进制
req,err:=http.NewReques("POST",url1,bytes.NewBuffer(postBytes))//是NewBuffer而不是NewReader
if err !=nil{
    fmt.Print("fail----------------------------\n")
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
req.Header.Set("Cookie",zhuan)
resp,err:=http.DefaultClient.Do(req)
body,_:=ioutil.ReadAll(resp.Body)
fmt.Println("response Status:",resp.Status )//状态码
defer resp.Body.Close()
fmt.Println(string(body))
data:=make(url.Values)
data["code"]=[]string{yan}
data["psw"]=[]string{"123456"}
data["usernum"]=[]string{"20122000"}
fmt.Print("--------------data----------------\n")
fmt.Println(data)
data2:=data.Encode()

data2=data1//两者的值相等

8.路由传参
可以使用下面的方法来获取路由参数:

方法 原型
GetInt func (c *Controller) GetInt(key string) (int64, error)
GetBool func (c *Controller) GetBool(key string) (bool, error)
GetFloat func (c *Controller) GetFloat(key string) (float64, error)
GetString func (c *Controller) GetString(key string) string

作者:larryzhao
链接:https://www.jianshu.com/p/sTeAbC
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

beego.Router("/blog/:catId/:catName:/:catPublish:/:catPrice", &controllers.MainController{})
func (this *MainController) Blog() {
    catId, _ := this.GetInt(":catId")
    catName := this.GetString(":catName")
    catPublish, _ := this.GetBool(":catPublish")
    catPrice, _ := this.GetFloat(":catPrice")
    beego.Debug(fmt.Sprintf("Category Id:%d Name:%s Publish:%v Price:%f", catId, catName, catPublish, catPrice))
}

9.html不转义输出

this.Data["data"] = "defc <br> abcd" 
{{str2html .data}}
输出
defc
abcd

10.文件夹的检测与创建

datePath := time.Now().Format("20060102") + `/`
adress:="static/carousel_img/"+datePath
//检测文件夹是否存在,不存在则创建
if _,err2 :=os.Stat(adress);err2==nil{
    fmt.Println("path exists1",adress)
}else{
    err :=os.MkdirAll(adress,0711)
    if err !=nil{
        log.Println("error creating directory")
        log.Println(err)
        return
    }
}

猜你喜欢

转载自blog.csdn.net/a976134036/article/details/78876658