1. Kata Pengantar
Hari ini, blog teknologi telah menjadi salah satu platform penting untuk pengaturcara berkomunikasi dan berinteraksi, mempamerkan teknologi dan meluaskan idea mereka. Bagi pengaturcara yang mempunyai asas pengaturcaraan tertentu, secara beransur-ansur menjadi trend untuk membangunkan blog mereka sendiri untuk mencapai penyesuaian peribadi dan pengembangan percuma.
Artikel ini akan membimbing pembaca untuk menggunakan rangka kerja Beego untuk membina blog teknologi mereka sendiri, bertujuan untuk menyediakan penyelesaian yang mudah, cekap dan mudah untuk dikembangkan.
2. Pengenalan kepada rangka kerja Beego
Beego ialah rangka kerja web yang dibangunkan berdasarkan bahasa Go. Reka bentuknya diinspirasikan oleh rangka kerja Django Python dan rangka kerja Tornado Python. Beego ialah rangka kerja web yang ringan, mudah dipelajari, cekap dan fleksibel yang turut menyokong pembangunan API RESTful.
3. Persediaan persekitaran
1. Pasang persekitaran Go
Mula-mula, anda perlu memasang persekitaran Go Untuk langkah khusus, sila rujuk dokumentasi rasmi untuk pemasangan.
2. Pasang alat Beego dan Bee
Beego dan Bee ialah dua alatan yang berbeza, dan Bee ialah alat baris arahan berdasarkan rangka kerja Beego, yang boleh digunakan untuk mencipta projek baharu, mencipta. Pengawal, Model, Pandangan, dsb., sangat meningkatkan kecekapan pembangunan.
Gunakan arahan untuk memasang: go get github.com/astaxie/beego
go get github.com/beego/bee
3 Cipta projek dan konfigurasi
Buat a projek bernama Myblog project: bee new myblog
Kemudian masukkan direktori myblog: cd myblog
Sekarang akan ada folder bernama conf dalam direktori myblog App.conf di dalam adalah fail konfigurasi Konfigurasi yang berkaitan, seperti alamat sambungan pangkalan data, port, dsb.
4. Laksanakan fungsi blog
1 Reka bentuk model
Pertama, anda perlu menulis fail blog.go dalam direktori model untuk mencipta jadual pangkalan data, seperti yang ditunjukkan di bawah:
model pakej
import (
"github.com/astaxie/beego/orm" "time"
)
//struktur data
//artikel
taip struct Artikel {
Id int64 `orm:"auto"` Title string `orm:"size(100)"` Content string `orm:"type(text)"` ImgUrl string `orm:"size(200)"` Category *Category `orm:"-"` Created time.Time `orm:"auto_now_add;type(datetime)"` Updated time.Time `orm:"auto_now_add;type(datetime)"`
}
//Category
type Category struct {
Id int64 Title string Articles []*Article `orm:"reverse(many)"`
}
2. Tulisan pengawal
Tulis fail article.go dalam direktori pengawal untuk pelaksanaan Kaedah pengawal yang berkaitan dengan artikel adalah seperti berikut:
pengawal pakej
import (
"myblog/models" "fmt" "strconv" "time"
)
taip ArticleController struct {
BaseController
}
func (Senarai *ArticleController) ini() {
categoryIdStr := this.GetString("category_id") categoryId, _ := strconv.ParseInt(categoryIdStr, 10, 64) categories := models.GetAllCategory() this.Data["Categories"] = categories var articles []*models.Article if categoryId == 0 { articles = models.GetAllArticle() } else { articles = models.GetArticleByCategory(categoryId) } this.Data["Articles"] = articles this.Data["CategoryId"] = categoryId this.TplName = "article/list.html"
}
func (ini *ArticleController) Add() {
if this.Ctx.Request.Method == "GET" { categories := models.GetAllCategory() this.Data["Categories"] = categories this.TplName = "article/add.html" return } title := this.GetString("title") content := this.GetString("content") categoryId, _ := this.GetInt64("category_id") imgUrl := this.GetString("img_url") article := models.Article{Title: title, Content:content, ImgUrl:imgUrl, Category:&models.Category{Id:categoryId}} models.AddArticle(&article) fmt.Println("添加成功") this.Redirect("/article/list", 302)
}
func (ini *ArticleController) Update() {
id, _ := this.GetInt64(":id") if this.Ctx.Request.Method == "GET" { article := models.GetArticleById(id) this.Data["Article"] = article categories := models.GetAllCategory() this.Data["Categories"] = categories this.TplName = "article/update.html" return } title := this.GetString("title") content := this.GetString("content") categoryId, _ := this.GetInt64("category_id") imgUrl := this.GetString("img_url") article := models.Article{Id: id, Title: title, Content:content, ImgUrl:imgUrl, Category:&models.Category{Id:categoryId}} models.UpdateArticle(&article) this.Redirect("/article/list", 302)
}
func (ini *ArticleController) Delete() {
id, _ := this.GetInt64(":id") models.DeleteArticleById(id) this.Redirect("/article/list", 302)
}
func (ini *ArticleController) Detail() {
id, _ := this.GetInt64(":id") article := models.GetArticleById(id) this.Data["Article"] = article this.TplName = "article/detail.html"
}
3. Lihat fail
Tulis direktori artikel dalam direktori pandangan untuk menyimpan maklumat berkaitan artikel Lihat fail, seperti yang ditunjukkan di bawah:
//article/list.html
{{template "header.html" .}}
<h3>文章管理</h3> <div class="list-nav"> <a href="{{.ctx.Request.URL.Path}}">全部</a> {{range .Categories}} <a href="{{.ctx.Request.URL.Path}}?category_id={{.Id}}">{{.Title}}</a> {{end}} </div> <table> <thead> <tr> <th>Id</th> <th>标题</th> <th>分类</th> <th>发布时间</th> <th>更新时间</th> <th>操作</th> </tr> </thead> <tbody> {{range .Articles}} <tr> <td>{{.Id}}</td> <td>{{.Title}}</td> <td>{{.Category.Title}}</td> <td>{{.Created.Format "2006-01-02 15:04:05"}}</td> <td>{{.Updated.Format "2006-01-02 15:04:05"}}</td> <td> <a href="/article/detail?id={{.Id}}">查看</a> <a href="/article/update?id={{.Id}}">修改</a> <a href="/article/delete?id={{.Id}}" onclick="return confirm('确定删除文章【{{.Title}}】吗?')">删除</a> </td> </tr> {{end}} </tbody> </table>
< /div>
{{template "footer.html" .}}
//article/add.html
{{template "header.html" .}}
<h3>添加文章</h3> <form action="/article/add" method="post"> <p>标题: <input type="text" name="title"></p> <p> 分类: <select name="category_id"> {{range .Categories}} <option value="{{.Id}}">{{.Title}}</option> {{end}} </select> </p> <p>图片Url: <input type="text" name="img_url"></p> <p>内容: <textarea name="content"></textarea></p> <p><input type="submit" value="添加"></p> </form>
//article/update.html
{{template "header.html " .}}
<h3>修改文章</h3> <form action="/article/update?id={{.Article.Id}}" method="post"> <p>标题: <input type="text" name="title" value="{{.Article.Title}}"></p> <p> 分类: <select name="category_id"> {{range $index, $option := .Categories}} <option value="{{$option.Id}}" {{if eq $option.Id $.Article.Category.Id}}selected{{end}}>{{$option.Title}}</option> {{end}} </select> </p> <p>图片Url: <input type="text" name="img_url" value="{{.Article.ImgUrl}}"></p> <p>内容: <textarea name="content" rows="30">{{.Article.Content}}</textarea></p> <p><input type="submit" value="修改"></p> </form>
//article/detail.html
{{template "header.html" .}}
<h3>{{.Article.Title}}</h3> <p>分类:{{.Article.Category.Title}}</p> <p>发布时间:{{.Article.Created.Format "2006-01-02 15:04:05"}}</p> <p>更新时间:{{.Article.Updated.Format "2006-01-02 15:04:05"}}</p> <p>内容:</p> <div class="detail-content">{{.Article.Content}}</div>
5. Jalankan projek
Gunakan arahan bee run dalam terminal untuk memulakan projek, dan kemudian lawati http://localhost:8080/article/list untuk mengakses blog.
6. Ringkasan
Artikel ini memperkenalkan secara ringkas penggunaan rangka kerja Beego, dan melaksanakan aplikasi blog mudah atas dasar ini. Dengan mengkaji artikel ini, pembaca boleh mempunyai pemahaman awal tentang penggunaan asas rangka kerja Beego Untuk butiran lanjut, sila rujuk dokumentasi rasmi.
Atas ialah kandungan terperinci Tutorial pembinaan laman web blog teknikal - dibangunkan menggunakan Beego. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!