古詩網站前臺實現
#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
- 中華古詩詞知識圖譜之網頁設計及實現(完結)網頁
- 開源!開源一個flutter實現的古詩拼圖遊戲Flutter遊戲
- 古詩詞相關詞庫
- 分享一個開源的古詩詞資料庫(約7w+古詩詞/3k+詩人)資料庫
- 購書網站前端實現(HTML+CSS+JavaScript)網站前端HTMLCSSJavaScript
- 前後端分離實踐:基於vue實現網站前臺的許可權管理後端Vue網站
- 網站前端和後臺效能優化21網站前端優化
- 網站前端和後臺效能優化28網站前端優化
- 使用python 下載全國曆代古詩Python
- 讀書筆記(6)古詩詞古文章筆記
- 看程式碼猜古詩哈哈逗死我了
- PhantomJS 和 NodeJS 在京東網站前端監控平臺的最佳實踐NodeJS網站前端
- 一首古詩帶來的圖資料庫大冒險資料庫
- [轉]為什麼大型網站前端使用 PHP 後臺邏輯用 Java?網站前端PHPJava
- 做網站前需要準備什麼網站
- 爬取網站前2_支援代理網站
- 豐富的詩詞資源!一個現代化詩詞學習網站!學習網站
- 網站前端_jQuery-基礎入門網站前端jQuery
- 爬取網站前3_下載限速網站
- 手機網站前端開釋出局技巧網站前端
- thinkphp5.0響應式企業站前後臺PHP
- 《課內外結合進行小學語文古詩文教學的實踐研究》結題報告
- 爬取網站前4_避免爬蟲陷阱網站爬蟲
- 網站前端優化一些小經驗網站前端優化
- 爬蟲入門經典 | 一文帶你爬取傳統古詩詞!爬蟲
- 分析古詩文寫作手法,促進小學生思維發展與提升
- 機器也可以寫詩——中文詩歌生成網路初探
- 基於React的PC網站前端架構分析React網站前端架構
- 如何用Python 製作詞雲-對1000首古詩做詞雲分析Python
- 孫茂松:運用之妙,存乎一心——從機器翻譯到古詩生成
- 爬取網站前1_解析網站robots.txt檔案網站
- 古語與網路語言
- 移動裝置上實現“詩人”也能用TensorFlow
- 雅虎十四條:網站前端網頁優化的14條原則網站前端網頁優化
- DT仿 中華詩歌網程式