古詩網站前臺實現
#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
相關文章
- 古詩網站後臺實現網站
- 基於Java+SpringBoot+Mysql實現的古詩詞平臺功能設計與實現三JavaSpring BootMySql
- 購書網站前端實現(HTML+CSS+JavaScript)網站前端HTMLCSSJavaScript
- 中華古詩詞知識圖譜之網頁設計及實現(完結)網頁
- 開源!開源一個flutter實現的古詩拼圖遊戲Flutter遊戲
- 古詩詞相關詞庫
- 分享一個開源的古詩詞資料庫(約7w+古詩詞/3k+詩人)資料庫
- 古詩詞 中文 分詞 自動化分詞
- 讀書筆記(6)古詩詞古文章筆記
- 使用python 下載全國曆代古詩Python
- 做網站前需要準備什麼網站
- 網站前端_jQuery-基礎入門網站前端jQuery
- thinkphp5.0響應式企業站前後臺PHP
- 基於React的PC網站前端架構分析React網站前端架構
- 豐富的詩詞資源!一個現代化詩詞學習網站!學習網站
- 一首古詩帶來的圖資料庫大冒險資料庫
- 如何用Python 製作詞雲-對1000首古詩做詞雲分析Python
- 《課內外結合進行小學語文古詩文教學的實踐研究》結題報告
- 機器也可以寫詩——中文詩歌生成網路初探
- 爬蟲入門經典 | 一文帶你爬取傳統古詩詞!爬蟲
- 分析古詩文寫作手法,促進小學生思維發展與提升
- DT仿 中華詩歌網程式
- 基於函式計算快速實現《為你寫詩》(阿里雲ECS)函式阿里
- [譯] Scratch 平臺的神經網路實現(R 語言)神經網路
- 以遊戲演繹1200多年前的古詩——《畫境長恨歌》敘事設計思路分享遊戲
- GRPC 多平臺實現RPC
- AI 智慧寫情詩、藏頭詩AI
- 程式詩(+)
- 詩詞
- Mavenir推出智慧物聯網平臺以實現更智慧的分析Maven
- 區塊鏈和能源網際網路的“詩和遠方”區塊鏈
- 詩悅網路 秋招一面涼經
- 三國演義內容抓取(詩詞名句網)
- Go實戰 22 | 網路程式設計:通過 RPC 實現跨平臺服務Go程式設計RPC
- 詩人有情詩 程式設計師有情碼程式設計師
- 《完美的一天》:一首與情懷、缺憾、現實有關的詩歌
- 線上教育網校、教育SaaS平臺實現數字化轉型
- 在網上*賭*正規實體資金安全網上現場同步可靠的平臺!