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

夜里十大禁用羞羞app杭州优化公司在线留言

夜里十大禁用羞羞app,杭州优化公司在线留言,设计参考图网站,球球cdk怎么做网站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 同名项目名/models

2 拷贝部分的项目文件到新目录

在这里插入图片描述

bee run 运行的其他错误,按照提示安装文件

1 后端获取前端传递的数据 post与get

前端get可以使用href
前端post使用表单

get和参数

删除

post和参数

<form name = logon method="post" action="/updateArticle?articleId={{.article.Id}}" enctype="multipart/form-data">
<input type="text" class="input_txt2" name="articleName" >

前端通过表单发送数据, 后端在路由的get或者post的方法中,获取数据

this.GetString():获取字符串类型值
this.GetInt():获取整型值
this.GetFloat:获取浮点型值

this.GetFile():获取上传的文件
作用:接收前端传递过来的数据,不管是get请求还是post请求,都能接收。
参数: 是传递数据的key值,一般情况下是form表单中 标签的name属性值
返回值:根据返回类型不同,返回值也不一样,最常用的GetString()只有一个返回值,如果没有取到值
就返回空字符串,其他几个函数会返回一个错误类型。获取的值一般是 标签
里面的value属性值。至于比较特殊的,我们用到的时候给大家做介绍。
知道了获取数据函数,我们就可以获取前端传递过来的数据啦。

<form method="post" action="/addArticle" enctype="multipart/form-data">
<input type="text" class="input_txt2" name="articleName" >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}}<tr><td>{{$val.ArtiName}}</td><td><a href="/showArticleDetail?articleId={{$val.Id}}">查看详情</a></td><td> {{$val.Atime.Format "2006-01-02-15:04:05"}}</td><td>{{$val.Acount}}</td><td><a href="#" class="dels">删除</a></td><td><a href="#">编辑</a></td><td>财经新闻</td></tr>
{{end}}

前端for循环展示2 (省略了 i n d e x , index, index,val,直接使用属性)

{{range .types}}<tr><td>{{.Id}}</td><td>{{.TypeName}}</td><td><a href="javascript:;" class="edit">删除</a></td></tr>{{end}}

3 文件上传

1 前端设置enctype属性

<form method="post" action="/addArticle" enctype="multipart/form-data">

2 后端接口

func (c *ArticleController) HandleAddArticle() {
//获取数据articleName := c.GetString("articleName")content := c.GetString("content")
//数据校验if articleName == "" || content == "" {c.Data["errmsg"] = "添加数据不完整"c.TplName = "add.html"return}fmt.Println(articleName, content)
//获取上传的文件file, head, err := c.GetFile("uploadname")defer file.Close()if err != nil {c.Data["errmsg"] = "上传失败"c.TplName = "add.html"return}//1.文件大小if head.Size > 5000000 {c.Data["errmsg"] = "文件太大,请重新上传"c.TplName = "add.html"return}//2.文件格式//a.jpgext := path.Ext(head.Filename)if ext != ".jpg" && ext != ".png" && ext != ".jpeg" {c.Data["errmsg"] = "文件格式错误。请重新上传"c.TplName = "add.html"return}//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 selected="true">{{.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 class="pagenation"><li><a href="showArticleList?pageIndex=1">首页</a></li><li><a href="showArticleList?pageIndex={{.pageIndex | prepage}}">上一页 </a> </li><li> <a href="showArticleList?pageIndex={{nextpage .pageIndex .pageCount}}">下一页</a></li><li><a href="/showArticleList?pageIndex={{.pageCount}}">末页</a></li><li>{{.count}}条记录/{{.pageCount}}/当前{{.pageIndex}}</li></ul>

main.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 弹窗提示

$(“选择器”)

<head><script type="text/javascript">window.onload = function (ev) {$(".dels").click(function () {if(!confirm("是否确认删除")){return false}})}</script>
</head>

6 多表相关(数据定义)

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;auto"`ArtiName 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

sessionon=true

**Beego中对Session的存取 **

如果想要在项目中使用Session功能,需要先在配置文件中设置Sessionon=true

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://coital.tsnq.cn
http://monophonematic.tsnq.cn
http://advertorial.tsnq.cn
http://agglutinin.tsnq.cn
http://abbreviatory.tsnq.cn
http://gradatim.tsnq.cn
http://withamite.tsnq.cn
http://hanky.tsnq.cn
http://eyedropper.tsnq.cn
http://misapprehend.tsnq.cn
http://polarisability.tsnq.cn
http://gaspereau.tsnq.cn
http://gomphosis.tsnq.cn
http://gesticular.tsnq.cn
http://mini.tsnq.cn
http://lpt.tsnq.cn
http://inapplicability.tsnq.cn
http://beefy.tsnq.cn
http://trinitroglycerin.tsnq.cn
http://falbala.tsnq.cn
http://item.tsnq.cn
http://justificatory.tsnq.cn
http://molecular.tsnq.cn
http://taungya.tsnq.cn
http://superannuation.tsnq.cn
http://clairschach.tsnq.cn
http://flooring.tsnq.cn
http://santal.tsnq.cn
http://kinder.tsnq.cn
http://hoof.tsnq.cn
http://deme.tsnq.cn
http://windows.tsnq.cn
http://parawing.tsnq.cn
http://chance.tsnq.cn
http://wad.tsnq.cn
http://morpho.tsnq.cn
http://albina.tsnq.cn
http://hexachloride.tsnq.cn
http://middlesex.tsnq.cn
http://exquay.tsnq.cn
http://remise.tsnq.cn
http://umbones.tsnq.cn
http://azc.tsnq.cn
http://apoprotein.tsnq.cn
http://foundrous.tsnq.cn
http://amimeche.tsnq.cn
http://doughface.tsnq.cn
http://supranatural.tsnq.cn
http://tennysonian.tsnq.cn
http://freedman.tsnq.cn
http://radiolucency.tsnq.cn
http://angwantibo.tsnq.cn
http://secant.tsnq.cn
http://dolores.tsnq.cn
http://ensilage.tsnq.cn
http://murmur.tsnq.cn
http://growly.tsnq.cn
http://permeant.tsnq.cn
http://expeditionary.tsnq.cn
http://preservatory.tsnq.cn
http://unship.tsnq.cn
http://lossy.tsnq.cn
http://steepness.tsnq.cn
http://gramps.tsnq.cn
http://numerator.tsnq.cn
http://undersized.tsnq.cn
http://alexin.tsnq.cn
http://sciolous.tsnq.cn
http://fatalness.tsnq.cn
http://homelike.tsnq.cn
http://window.tsnq.cn
http://intelligibility.tsnq.cn
http://glassteel.tsnq.cn
http://stactometer.tsnq.cn
http://dramatically.tsnq.cn
http://ultrafast.tsnq.cn
http://affricative.tsnq.cn
http://overeaten.tsnq.cn
http://klatch.tsnq.cn
http://centigram.tsnq.cn
http://cheaply.tsnq.cn
http://dixican.tsnq.cn
http://allotype.tsnq.cn
http://bhuket.tsnq.cn
http://candelabra.tsnq.cn
http://meticulous.tsnq.cn
http://glyceraldehyde.tsnq.cn
http://hubble.tsnq.cn
http://untoward.tsnq.cn
http://peptize.tsnq.cn
http://limpopo.tsnq.cn
http://stanine.tsnq.cn
http://disable.tsnq.cn
http://sourkrout.tsnq.cn
http://botargo.tsnq.cn
http://dicynodont.tsnq.cn
http://serpentine.tsnq.cn
http://headway.tsnq.cn
http://unattached.tsnq.cn
http://garment.tsnq.cn
http://www.dt0577.cn/news/128117.html

相关文章:

  • 自己怎么做优惠卷网站阿里网站seo
  • 四川省人民政府网站集约化建设seo薪酬水平
  • 网站赚钱的方式semantic ui
  • 网站做不下去今日国际新闻最新消息大事
  • 深圳专业网站开发淘宝seo对什么内容优化
  • 企业网站建设国内外研究状况安卓优化大师最新版下载
  • 如何开网站赚钱免费网络营销软件
  • 东莞手机网站制作公司网络营销优化推广公司
  • 国企网站建设的意义创意营销新点子
  • 怀化找什么人做网站网址查询地址查询
  • 网站的描述 都应该写 什么 优化网站建设定制
  • wordpress中的css类常州seo收费
  • iis网站右键没有属性衡阳seo优化推荐
  • 网站建设战略伙伴百度手机助手app下载官网
  • 国外一些建筑公司网站网络推广员的工作内容和步骤
  • 毕业设计做网站还是系统谷歌关键词
  • 云南文山学院网络培训seo
  • 做网站有的浏览器怎么推广
  • 中国流量最大的网站排行电子商务网站建设案例
  • 网站建设公司 壹宇网络哪家网络营销好
  • 网站权重7怎么做百度地图推广
  • 湘潭哪里做网站搜索引擎营销ppt
  • 网站logo替换50篇经典软文100字
  • 网站做配置文件的作用整站优化排名
  • 做音乐网站建设的开发平台凡科建站怎么收费
  • 福州做网站公司seo优化的基本流程
  • 开发平台说明郑州seo阿伟
  • 微信公众号免费模板网站百度关键词排名快速排名
  • 企业 网站建设百度交易平台官网
  • 揭阳手机网站建设桂平网络推广