烟台网站建设企业,怎么建立一个表格,长沙微网站开发,男女做那个的小视频网站0 项目导入
1 在英文路径下新建一个同名的项目,拷贝其他数据到这个文件
bee new 同名项目名
cd 同名项目名
go mod tidy
go get -u -v github.com/astaxie/beego
go get 同名项目名/models2 拷贝部分的项目文件到新目录 bee run 运行的其他错误,按照提示安装文件
1 后端获取…0 项目导入
1 在英文路径下新建一个同名的项目,拷贝其他数据到这个文件
bee new 同名项目名
cd 同名项目名
go mod tidy
go get -u -v github.com/astaxie/beego
go get 同名项目名/models2 拷贝部分的项目文件到新目录 bee run 运行的其他错误,按照提示安装文件
1 后端获取前端传递的数据 post与get 前端get可以使用href 前端post使用表单 get和参数
删除
post和参数
form name logon methodpost action/updateArticle?articleId{{.article.Id}} enctypemultipart/form-data
input typetext classinput_txt2 namearticleName 前端通过表单发送数据, 后端在路由的get或者post的方法中,获取数据
this.GetString()获取字符串类型值 this.GetInt()获取整型值 this.GetFloat获取浮点型值 … this.GetFile()获取上传的文件 作用接收前端传递过来的数据不管是get请求还是post请求都能接收。 参数: 是传递数据的key值一般情况下是form表单中 标签的name属性值 返回值根据返回类型不同返回值也不一样最常用的GetString()只有一个返回值如果没有取到值 就返回空字符串其他几个函数会返回一个错误类型。获取的值一般是 标签 里面的value属性值。至于比较特殊的我们用到的时候给大家做介绍。 知道了获取数据函数我们就可以获取前端传递过来的数据啦。
form methodpost action/addArticle enctypemultipart/form-data
input typetext classinput_txt2 namearticleName func (c *ArticleController) HandleAddArticle() {articleName : c.GetString(articleName)
}2 前端获取后端传递的数据
普通数据 注意前面有个点 c.Data[errmsg] 添加数据不完整
h1{{.errmsg}}/h1?切片数据-循环展示数据
后端 func(this*ArticleController)ShowArticleList(){//指定表o : orm.NewOrm()qs : o.QueryTable(Article)var articles []models.Article_,err : qs.All(articles)if err ! nil{beego.Info(查询数据错误)}//传递数据this.Data[articles] articlesthis.TplName index.html
}
前端for循环展示1
{{range $index,$val : .articles}}trtd{{$val.ArtiName}}/tdtda href/showArticleDetail?articleId{{$val.Id}}查看详情/a/tdtd {{$val.Atime.Format 2006-01-02-15:04:05}}/tdtd{{$val.Acount}}/tdtda href# classdels删除/a/tdtda href#编辑/a/tdtd财经新闻/td/tr
{{end}}前端for循环展示2 (省略了 i n d e x , index, index,val,直接使用属性)
{{range .types}}trtd{{.Id}}/tdtd{{.TypeName}}/tdtda hrefjavascript:; classedit删除/a/td/tr{{end}}3 文件上传
1 前端设置enctype属性
form methodpost action/addArticle enctypemultipart/form-data2 后端接口
func (c *ArticleController) HandleAddArticle() {
//获取数据articleName : c.GetString(articleName)content : c.GetString(content)
//数据校验if articleName || content {c.Data[errmsg] 添加数据不完整c.TplName add.htmlreturn}fmt.Println(articleName, content)
//获取上传的文件file, head, err : c.GetFile(uploadname)defer file.Close()if err ! nil {c.Data[errmsg] 上传失败c.TplName add.htmlreturn}//1.文件大小if head.Size 5000000 {c.Data[errmsg] 文件太大请重新上传c.TplName add.htmlreturn}//2.文件格式//a.jpgext : path.Ext(head.Filename)if ext ! .jpg ext ! .png ext ! .jpeg {c.Data[errmsg] 文件格式错误。请重新上传c.TplName add.htmlreturn}//3.防止重名,以时间戳命名timestamp : time.Now().Unix()timeStr : strconv.Itoa(int(timestamp))fileName : timeStr ext//存储c.SaveToFile(uploadname, ./static/img/fileName)//3.处理数据//插入操作o : orm.NewOrm()var article models.Articlearticle.ArtiName articleNamearticle.Acontent contentarticle.Aimg /static/img/ fileNameo.Insert(article)//4.返回页面c.Redirect(/showArticleList, 302)}
循环中比较数据
比较TypeName ,和typeName是否相等,决定下拉框是否选中 {{range .types}}{{if compare .TypeName $.typeName}}option selectedtrue{{.TypeName}}/option{{else}}option{{.TypeName}}/option{{end}}{{end}}4 分页
后端分页, //展示文章列表页
func(this*ArticleController)ShowArticleList(){//获取数据//高级查询//指定表o : orm.NewOrm()qs : o.QueryTable(Article)//querysetervar articles []models.Article//_,err : qs.All(articles)//if err ! nil{// beego.Info(查询数据错误)//}//查询总记录数count,_ : qs.Count()//获取总页数pageSize : 2pageCount : math.Ceil(float64(count) / float64(pageSize))
//获取页码pageIndex,err: this.GetInt(pageIndex)if err ! nil{pageIndex 1}//获取数据//作用就是获取数据库部分数据,第一个参数获取几条,第二个参数从那条数据开始获取,返回值还是querySeter//起始位置计算start : (pageIndex - 1)*pageSize
//获取指定数量的数据qs.Limit(pageSize,start).All(articles)//传递数据this.Data[pageIndex] pageIndexthis.Data[pageCount] int(pageCount)this.Data[count] countthis.Data[articles] articlesthis.TplName index.html
}分页逻辑(首页末页,上一页下一页)
html, 通过视图传递一个参数 | 前面是传递的参数,后一个是视图名,{{显示视图对应函数的返回值}} 通过视图传递多个参数 视图名在前面,空格 后面是参数,{{显示视图对应函数的返回值}}
ul classpagenationlia hrefshowArticleList?pageIndex1首页/a/lilia hrefshowArticleList?pageIndex{{.pageIndex | prepage}}上一页 /a /lili a hrefshowArticleList?pageIndex{{nextpage .pageIndex .pageCount}}下一页/a/lilia href/showArticleList?pageIndex{{.pageCount}}末页/a/lili共{{.count}}条记录/共{{.pageCount}}页/当前{{.pageIndex}}页/li/ulmain.go,通过添加视图,并绑定视图与函数的关系,来执行函数
func main() {
//绑定视图和函数beego.AddFuncMap(prepage, ShowPrePage)beego.AddFuncMap(nextpage, ShowNextPage)beego.Run()
}
//上一页
func ShowPrePage(pageIndex int) int {if pageIndex 1 {return pageIndex}var pageIndex2 pageIndex - 1return pageIndex2
}
//下一页
func ShowNextPage(pageIndex int, pageCount int) int {if pageIndex pageCount {return pageIndex}var pageIndex2 pageIndex 1return pageIndex2
}
5 弹窗提示
$(“选择器”)
headscript typetext/javascriptwindow.onload function (ev) {$(.dels).click(function () {if(!confirm(是否确认删除)){return false}})}/script
/head6 多表相关(数据定义)
1.一对多(外键)
rel(fk)和reverse(many)成对出现,表示一对多的关系,一是变量,多是切片,类型是对应的表名
type Article struct {Id int orm:pk;auto//多ArticleType *ArticleType orm:rel(fk)
}// 类型表
type ArticleType struct {Id intTypeName string orm:size(20)// 1Articles []*Article orm:reverse(many)
}
多对多(创建关系表)
reverse(many)和rel(m2m)成对出现表示多对多关系,都是使用切片定义,类型是表名,本质是创建了关系表
// 定义一个结构体
type User struct {Id intArticles []*Article orm:reverse(many)
}type Article struct {Id int orm:pk;autoArtiName string orm:size(20)Users []*User orm:rel(m2m)
}6 多表相关(数据操作)
1.一对多(插入操作)
只需要在文章表插入类型对象即可。代码如下
o : orm.NewOrm()
//多
article : models.Article{}
//一
artiType : models.ArticleType{Id:id}
//查询一的外键
o.Read(artiType)
//多赋值
article.ArticleType artiType
//多插入
o.Insert(article)2.一对多(查询操作)
当需要在当前表查询其他表的数据时,使用这种方式.,但是当表没有关联表的数据时,不会找到记录 比如此处,关联文章类型表,来查询文章表的数据.没有文章类型的数据是找不到的,因为没有外键.
ORM做多表查询的时候默认是惰性查询即不明确指出来要做多表查询即便是两个表之间存在关系ORM也不会给两个表做关联。指定多表查询的函数是RelatedSel()。参数是要关联的表名可以有多个。如果没有关联,那么就是单表查询.代码如下
o.QueryTable(要查询的表-多).RelatedSel(要关联的表-一).Count()
count,err o.QueryTable(Article).RelatedSel(ArticleType).Count()如果关联表的那个字段没有值那么数据查不到 根据选中的类型查询相应类型文章 通过Filter(“表名__表字段”, 表字段值)进行过滤,相当于where //根据选中的类型查询相应类型文章typeName : this.GetString(select)qs.Limit(pageSize, start).RelatedSel(ArticleType).Filter(ArticleType__TypeName, typeName).All(articles)7 beego中Session和Cookie
Cookie
用来一定时间的保存用户数据数据存储在客户端网站的客户端就是浏览器启用的时候能设置Cookie的有效时间当时间截至的时候Cookie失效.
Beego中对Cookie的存取删
Beego把数据存储到Cookie中代码如下
this.Ctx.SetCookie(key,value,time)//第一个参数是Cookie的key值第二个参数是Cookie的value值第三个参数是设置的Cookie的有效时间。取Cookie的代码如下
this.Ctx.GetCookie(key)//参数是Cookie的key值返回值是对应的value值。当没有对应的Cookie或者Cookie已失效返回空字符串删除Cookie的代码如下
this.Ctx.SetCookie(key,value,0)//第一个参数是Cookie的key值第二个参数任意值第三个参数把Cookie的值设置为小于0就马上失效。Session
也是用来一定时间的保存用户数据不过数据存储在服务器Beego启用Sesssion的时候需要在配置文件中开启Session功能。在Beego使用中一般不设置Session的时间当浏览器关闭的时候Session失效。
app.conf
sessionontrue**Beego中对Session的存取 **
如果想要在项目中使用Session功能需要先在配置文件中设置Sessionontrue
Beego存储Session的代码:
this.SetSession(key,value)//两个参数一个是Session的key第二个是Session的Value获取Session的代码如下
this.GetSession(key)//参数是Session的key值返回值是Session对应的value值类型是interface{}删除Session的代码如下
this.DelSession(key)//参数是Session的key值我们通过表格来分析他们的不同
不同点CookieSession数据存储位置客户端服务器数据安全性相比较而言低高生命周期随着设置时间的结束生命周期结束当浏览器关闭的时候生命周期结束适用场景对安全性要求不高的需要存储时间较长的数据安全性要求搞不需要长期存储的数据 文章转载自: http://www.morning.mkczm.cn.gov.cn.mkczm.cn http://www.morning.yksf.cn.gov.cn.yksf.cn http://www.morning.tnnfy.cn.gov.cn.tnnfy.cn http://www.morning.fjntg.cn.gov.cn.fjntg.cn http://www.morning.sgfpn.cn.gov.cn.sgfpn.cn http://www.morning.bdzps.cn.gov.cn.bdzps.cn http://www.morning.nccqs.cn.gov.cn.nccqs.cn http://www.morning.rycd.cn.gov.cn.rycd.cn http://www.morning.rtmqy.cn.gov.cn.rtmqy.cn http://www.morning.yzzfl.cn.gov.cn.yzzfl.cn http://www.morning.pkmcr.cn.gov.cn.pkmcr.cn http://www.morning.nwjzc.cn.gov.cn.nwjzc.cn http://www.morning.tyjnr.cn.gov.cn.tyjnr.cn http://www.morning.syqtt.cn.gov.cn.syqtt.cn http://www.morning.tjwlp.cn.gov.cn.tjwlp.cn http://www.morning.zrwlz.cn.gov.cn.zrwlz.cn http://www.morning.rycbz.cn.gov.cn.rycbz.cn http://www.morning.qxlyf.cn.gov.cn.qxlyf.cn http://www.morning.bxsgl.cn.gov.cn.bxsgl.cn http://www.morning.ryfqj.cn.gov.cn.ryfqj.cn http://www.morning.rzcfg.cn.gov.cn.rzcfg.cn http://www.morning.mnbcj.cn.gov.cn.mnbcj.cn http://www.morning.nqpy.cn.gov.cn.nqpy.cn http://www.morning.djxnw.cn.gov.cn.djxnw.cn http://www.morning.jyjqh.cn.gov.cn.jyjqh.cn http://www.morning.dbrpl.cn.gov.cn.dbrpl.cn http://www.morning.bmtyn.cn.gov.cn.bmtyn.cn http://www.morning.dyrzm.cn.gov.cn.dyrzm.cn http://www.morning.fdrwk.cn.gov.cn.fdrwk.cn http://www.morning.hkpn.cn.gov.cn.hkpn.cn http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn http://www.morning.rkzk.cn.gov.cn.rkzk.cn http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn http://www.morning.lnfkd.cn.gov.cn.lnfkd.cn http://www.morning.mhlsx.cn.gov.cn.mhlsx.cn http://www.morning.srmdr.cn.gov.cn.srmdr.cn http://www.morning.mbqyl.cn.gov.cn.mbqyl.cn http://www.morning.bybhj.cn.gov.cn.bybhj.cn http://www.morning.mrlls.cn.gov.cn.mrlls.cn http://www.morning.pnmnl.cn.gov.cn.pnmnl.cn http://www.morning.xgkxy.cn.gov.cn.xgkxy.cn http://www.morning.fwzjs.cn.gov.cn.fwzjs.cn http://www.morning.bsqth.cn.gov.cn.bsqth.cn http://www.morning.kwwkm.cn.gov.cn.kwwkm.cn http://www.morning.tlzbt.cn.gov.cn.tlzbt.cn http://www.morning.fqnql.cn.gov.cn.fqnql.cn http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn http://www.morning.mzmqg.cn.gov.cn.mzmqg.cn http://www.morning.ylsxk.cn.gov.cn.ylsxk.cn http://www.morning.mlckd.cn.gov.cn.mlckd.cn http://www.morning.ympcj.cn.gov.cn.ympcj.cn http://www.morning.tnktt.cn.gov.cn.tnktt.cn http://www.morning.dnmwl.cn.gov.cn.dnmwl.cn http://www.morning.youngbase.cn.gov.cn.youngbase.cn http://www.morning.dtfgr.cn.gov.cn.dtfgr.cn http://www.morning.tktcr.cn.gov.cn.tktcr.cn http://www.morning.ypnxq.cn.gov.cn.ypnxq.cn http://www.morning.yrccw.cn.gov.cn.yrccw.cn http://www.morning.xbdrc.cn.gov.cn.xbdrc.cn http://www.morning.wwznd.cn.gov.cn.wwznd.cn http://www.morning.pwfwk.cn.gov.cn.pwfwk.cn http://www.morning.kgsws.cn.gov.cn.kgsws.cn http://www.morning.rckdq.cn.gov.cn.rckdq.cn http://www.morning.dpplr.cn.gov.cn.dpplr.cn http://www.morning.xsklp.cn.gov.cn.xsklp.cn http://www.morning.sjli222.cn.gov.cn.sjli222.cn http://www.morning.trjr.cn.gov.cn.trjr.cn http://www.morning.lokext.com.gov.cn.lokext.com http://www.morning.brqjs.cn.gov.cn.brqjs.cn http://www.morning.pinngee.com.gov.cn.pinngee.com http://www.morning.mdmqg.cn.gov.cn.mdmqg.cn http://www.morning.tqrxm.cn.gov.cn.tqrxm.cn http://www.morning.bpyps.cn.gov.cn.bpyps.cn http://www.morning.dbdmr.cn.gov.cn.dbdmr.cn http://www.morning.kjgdm.cn.gov.cn.kjgdm.cn http://www.morning.jzccn.cn.gov.cn.jzccn.cn http://www.morning.qqnp.cn.gov.cn.qqnp.cn http://www.morning.xcyzy.cn.gov.cn.xcyzy.cn http://www.morning.ltksw.cn.gov.cn.ltksw.cn http://www.morning.rwzmz.cn.gov.cn.rwzmz.cn