欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

beego记录1(边写边记)

程序员文章站 2024-03-13 17:27:21
...

1.在conf/app.conf中添加一行EnableAdmin=true,我们就可以在localhost:8088监控界面
beego记录1(边写边记)

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__的值
}

beego记录1(边写边记)

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
    }
}
相关标签: beego http