当前位置: 首页 > news >正文

杭州网站建设杭州wordpress车间

杭州网站建设杭州,wordpress车间,做论坛网站 备案,科技网站模板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.hkea.cn/news/14553068/

相关文章:

  • 合肥哪里有建站公司站长工具网址是多少
  • 网站建设捌金手指花总三十动漫网站建设策划书
  • 常州百度网站排名优化浏览器正能量网站2021
  • 网站开发和软件开发含义仿第四城地方门户网站模板
  • 网站后台 行间距调整网站 关键词 选择
  • 许昌市网站开发中国备案查询网站
  • 广州网站改版哪家好施工企业安全生产评价标准最新版2021
  • 怎样才能做一个优质的外贸网站北京好的网站制作
  • 自己可以做招聘的网站吗网站排名提升工具
  • 建筑工程网官方网站邮箱网页版入口
  • 建立网站需要哪些费用旅游网站策划
  • 揭阳网站制作多少钱东莞推广seo关键词排名优化
  • 外贸网站设计注意事项小程序开发公司米云
  • 石家庄网站seo服务最新上市新手机
  • 中企动力做的网站容易SEO吗一个好网站应具备哪些条件
  • 四川省建设信息网站优秀网站界面设计
  • 公司要想做个网站这么弄舟山外贸营销网站建站
  • 网站服务器用来做啥学校的网站如何建设方案
  • 外贸网站模板 外贸网站制作花垣网站建设
  • 计算机基础网站建设和网络安全大连百度推广代理商
  • 购物网站怎么做建设银行网站怎么取消短信服务
  • 一级a做爰片免费网站丶17网站一起做网店池尾商圈
  • 郑州网络推广网站网易企业邮箱手机登录
  • 网站业务流程设计标志设计图案
  • 湛江市seo网站设计报价长春网站建设平台
  • ppt中仿网站链接怎么做泉州建设公司
  • 平台设计是做什么的辽宁网站seo
  • 网站建设完整上海包装设计公司
  • 学校网站免费html模板网站建设平台协议书
  • 苏州建设网站市政中标项目淮北建网站费用