beego记录1(边写边记)
程序员文章站
2024-03-13 17:27:21
...
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
}
}
推荐阅读