内容简介:版权声明:本文为博主尹成联系QQ77025077,微信18510341407原创文章,欢迎转载侵权不究。 https://blog.csdn.net/yincheng01/article/details/84068782
版权声明:本文为博主尹成联系QQ77025077,微信18510341407原创文章,欢迎转载侵权不究。 https://blog.csdn.net/yincheng01/article/details/84068782
#Models实现
将ancientpoetry.sql导入数据库并执行,创建对应的数据库和表,在项目中的models文件夹下创建对应的model,并为每个model实现对应的基础方法。在init.go中获取配置文件中和数据库县官的信息,注册模型并连接数据库。部分代码如下:
package models import ( "net/url" "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" ) func init() { //从配至文件中获取ip dbhost := beego.AppConfig.String("db.host") //从配至文件中获取端口 dbport := beego.AppConfig.String("db.port") //从配至文件中获取用户名 dbuser := beego.AppConfig.String("db.user") //从配至文件中获取密码 dbpassword := beego.AppConfig.String("db.password") //从配至文件中获取数据库名称 dbname := beego.AppConfig.String("db.name") //从配至文件中获取时区 timezone := beego.AppConfig.String("db.timezone") //如果端口号为空,则赋予默认值3306 if dbport == "" { dbport = "3306" } //拼接数据库信息 dsn := dbuser + ":" + dbpassword + "@tcp(" + dbhost + ":" + dbport + ")/" + dbname + "?charset=utf8" // fmt.Println(dsn) if timezone != "" { //QueryEscape函数对s进行转码使之可以安全的用在URL查询里。 dsn = dsn + "&loc=" + url.QueryEscape(timezone) } //注册数据库 orm.RegisterDataBase("default", "mysql", dsn) //注册模型 orm.RegisterModel(new(Auth), new(Admin), new(InfoList), new(InfoClass)) //从配至文件中获取运行模式 /*if beego.AppConfig.String("runmode") == "dev" { orm.Debug = true }*/ } //获取表名 func TableName(name string) string { return beego.AppConfig.String("db.prefix") + name }
#前台实现
效果图如下:
该页面树妖实现了古诗的展示,主要有四个分类:诗词古韵,国学经典,开心儿歌,儿童古诗,其中每个分类对应不同的数据库中不同的表,点击某一篇古诗词查看古诗词详情,在后台获取古诗词的id,通过该id查询数据库,将古诗详情在页面上展示。
func (self *WwwController) Index() { //创建存储过滤条件的切片 filters := make([]interface{}, 0) //将过滤条件status=1追加到切片 filters = append(filters, "status", 1) //将过滤条件class_id=5(开心儿歌)追加到切片中 filters = append(filters, "class_id", 5) //分页查询古诗词 result, _ := models.NewsGetList(1, 6, filters...) //创建存储古诗词的切片,切片中元素类型为map类型,键为string类型,值空接口类型 list := make([]map[string]interface{}, len(result)) //遍历结果 for k, v := range result { //创建map row := make(map[string]interface{}) //添加信息 row["id"] = v.Id row["title"] = v.Title row["class_id"] = v.ClassId //如果缩略图片是否为空 if(string(v.Picurl) == "") { //生成一个[1,10)之间的数 var r = rand.Intn(16) //为缩略图赋值 v.Picurl = "/uploads/image/rand" + fmt.Sprintf("%d", r) + ".jpeg" //fmt.Println(v.Picurl) } //缩略图 row["picurl"] = v.Picurl //音频 row["media"] = v.Media //如果摘要不为空 if (v.Desc != "") { //将摘要强转为切片 nameRune := []rune(v.Desc) //获取切片的长度 lth := len(nameRune) //判断切片的长度是否大于30 if(lth > 30) { lth = 30 } //获取摘要的前30个字符 row["desc"] = string(nameRune[:lth]) } //作者编辑 row["author"] = v.Author //存入切片 list[k] = row } //创建存储过滤条件的切片 filters2 := make([]interface{}, 0) //将审核状态为1的过滤条件追加到切片中 filters2 = append(filters2, "status", 1) //将class_id=3(儿童古诗)的骡驴条件追加到切片中 filters2 = append(filters2, "class_id", 3) //分页查询 result2, _ := models.NewsGetList(1, 6, filters2...) //创建存储古诗词的切片,切片中元素类型为map类型,键为string类型,值空接口类型 list2 := make([]map[string]interface{}, len(result2)) //遍历结果 for k, v := range result2 { //创建map row2 := make(map[string]interface{}) //添加信息 row2["id"] = v.Id row2["title"] = v.Title row2["class_id"] = v.ClassId //如果缩略图片是否为空 if(string(v.Picurl) == "") { //随机生成[1,10)之间的整数 var r = rand.Intn(16) //为缩略图赋值 v.Picurl = "/uploads/image/rand" + fmt.Sprintf("%d", r) + ".jpeg" } //缩略图 row2["picurl"] = v.Picurl //音频 row2["media"] = v.Media //判断摘要是否为空 if (v.Desc != "") { //将摘要转换为切片 nameRune := []rune(v.Desc) //获取摘要的长度 lth := len(nameRune) //判断摘要的长度是否大于30 if(lth > 30) { lth = 30 } //摘要 row2["desc"] = string(nameRune[:lth]) } //作者编辑 row2["author"] = v.Author list2[k] = row2 } //创建存储过滤条件的切片 filters3 := make([]interface{}, 0) //将审核状态为1的过滤条件追加到切片中 filters3 = append(filters3, "status", 1) //将class_id=3(国学生活)的骡驴条件追加到切片中 filters3 = append(filters3, "class_id", 1) //分页查询 result3, _ := models.NewsGetList(1, 16, filters3...) //创建存储古诗词的切片,切片中元素类型为map类型,键为string类型,值空接口类型 list3 := make([]map[string]interface{}, len(result3)) for k, v := range result3 { //创建map row2 := make(map[string]interface{}) //添加信息 row2["id"] = v.Id row2["title"] = v.Title row2["class_id"] = v.ClassId //判断缩略图是否为空 if(string(v.Picurl) == "") { //随机生成[1,10)之间的整数 var r = rand.Intn(16) //为缩略图赋值 v.Picurl = "/uploads/image/rand" + fmt.Sprintf("%d", r) + ".jpeg" } //缩略图 row2["picurl"] = v.Picurl //音频 row2["media"] = v.Media //判断摘要是否为空 if (v.Desc != "") { //将摘要转换为切片 nameRune := []rune(v.Desc) //获取摘要的长度 lth := len(nameRune) //判断摘要的长度是否大于30 if(lth > 30) { lth = 30 } //摘要 row2["desc"] = string(nameRune[:lth]) } //作者编辑 row2["author"] = v.Author list3[k] = row2 } //创建存储过滤条件的切片 filters4 := make([]interface{}, 0) //将审核状态为1的过滤条件追加到切片中 filters4 = append(filters4, "status", 1) //将class_id=2(诗词古韵)的骡驴条件追加到切片中 filters4 = append(filters4, "class_id", 2) //分页查询 result4, _ := models.NewsGetList(1, 6, filters4...) fmt.Println("result4_length = ", len(result4)) //创建存储古诗词的切片,切片中元素类型为map类型,键为string类型,值空接口类型 list4 := make([]map[string]interface{}, len(result4)) //遍历结果 for k, v := range result4 { //创建map row2 := make(map[string]interface{}) //赋值 row2["id"] = v.Id row2["title"] = v.Title row2["class_id"] = v.ClassId //判断缩略图片是否为空 if(string(v.Picurl) == "") { //随机生成[1,10)之间的整数 var r = rand.Intn(16) //为缩略图赋值 v.Picurl = "/uploads/image/rand" + fmt.Sprintf("%d", r) + ".jpeg" } //缩略图 row2["picurl"] = v.Picurl //音频 row2["media"] = v.Media //判断摘要是否为空 if (v.Desc != "") { //将摘要转换为切片 nameRune := []rune(v.Desc) //获取摘要的长度 lth := len(nameRune) //判断摘要的长度是否大于30 if(lth > 30) { lth = 30 } //摘要 row2["desc"] = string(nameRune[:lth]) } //作者编辑 row2["author"] = v.Author list4[k] = row2 } //创建map,map中的每个元素都是一个分类 out := make(map[string]interface{}) out["list"] = list out["list2"] = list2 out["list3"] = list3 out["list4"] = list4 out["class_id"] = 0 self.Data["data"] = out self.Layout = "public/www_layout.html" self.display() }
学院 Go 语言视频主页
https://edu.csdn.net/lecturer/1928扫码获取海量视频及源码 QQ群:721929980
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Is Parallel Programming Hard, And, If So, What Can You Do About
Paul E. McKenney
The purpose of this book is to help you understand how to program shared-memory parallel machines without risking your sanity.1 By describing the algorithms and designs that have worked well in the pa......一起来看看 《Is Parallel Programming Hard, And, If So, What Can You Do About 》 这本书的介绍吧!