1. Vorwort
Heutzutage sind Technologieblogs zu einer der wichtigen Plattformen für Programmierer geworden, um zu kommunizieren, zu interagieren, Technologie darzustellen und ihre Ideen zu erweitern. Für Programmierer mit einer bestimmten Programmiergrundlage ist es nach und nach zum Trend geworden, eigene Blogs zu entwickeln, um eine personalisierte Anpassung und kostenlose Erweiterung zu erreichen.
Dieser Artikel führt Leser dazu, das Beego-Framework zum Erstellen ihres eigenen Technologie-Blogs zu verwenden, mit dem Ziel, eine praktische, effiziente und einfach zu erweiternde Lösung bereitzustellen.
2. Einführung in das Beego-Framework
Beego ist ein Web-Framework, das auf der Go-Sprache basiert. Sein Design ist vom Django-Framework von Python und dem Tornado-Framework von Python inspiriert. Beego ist ein leichtes, leicht zu erlernendes, effizientes und flexibles Web-Framework, das auch die RESTful-API-Entwicklung unterstützt.
3. Umgebungseinrichtung
1. Installieren Sie die Go-Umgebung. Die spezifischen Schritte zur Installation finden Sie in der offiziellen Dokumentation.
2. Installieren Sie die Tools Beego und Bee.
Beego und Bee sind zwei verschiedene Tools. Bee ist ein Befehlszeilentool, das auf dem Beego-Framework basiert und zum Erstellen neuer Projekte, Controller und Modelle verwendet werden kann. Ansichten usw. haben die Entwicklungseffizienz erheblich verbessert.
go get github.com/beego/bee
Erstellen Sie ein Projekt mit dem Namen myblog: bee new myblog
Dann geben Sie myblog ein Verzeichnis :cd myblog
Jetzt gibt es einen Ordner namens conf im myblog-Verzeichnis. Die darin enthaltene app.conf ist die Konfigurationsdatei. Hier können wir relevante Konfigurationen vornehmen, z. B. die Verbindungsadresse und den Port der Datenbank.
1. Zuerst müssen Sie die blog.go-Datei in das Modellverzeichnis schreiben, um Datenbanktabellen zu erstellen, wie unten gezeigt:
Paketmodelle
import (
rrree)
//Datenstruktur
//Articletype Artikelstruktur {
"github.com/astaxie/beego/orm" "time"
//Kategorie
type Kategoriestruktur {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)"`
2. Schreiben Sie die Datei „article.go“ in das Controller-Verzeichnis. Verwenden Um die artikelbezogenen Controller-Methoden wie folgt zu implementieren:
Paketcontroller
Id int64 Title string Articles []*Article `orm:"reverse(many)"`
"myblog/models" "fmt" "strconv" "time"
BaseController
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"
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)
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 (this *ArticleController) Detail() {
id, _ := this.GetInt64(":id") models.DeleteArticleById(id) this.Redirect("/article/list", 302)
Schreiben Sie das Artikelverzeichnis in das Ansichtenverzeichnis, um die artikelbezogenen Ansichtsdateien zu speichern, wie unten gezeigt:
//article/list .html
{{template "header.html" .}}
id, _ := this.GetInt64(":id") article := models.GetArticleById(id) this.Data["Article"] = article this.TplName = "article/detail.html"
//article/add.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>
//article/update.html
{{template "header.html". .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/detail.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>
5. Führen Sie das Projekt aus
Verwenden Sie den Befehl bee run im Terminal, um das Projekt zu starten, und dann Besuchen Sie http://localhost :8080/article/list, um auf den Blog zuzugreifen.
6. Zusammenfassung
Dieser Artikel stellt kurz die Verwendung des Beego-Frameworks vor und implementiert auf dieser Basis eine einfache Blog-Anwendung. Durch das Studium dieses Artikels können sich die Leser einen ersten Überblick über die grundlegende Verwendung des Beego-Frameworks verschaffen. Weitere Einzelheiten finden Sie in der offiziellen Dokumentation.
Das obige ist der detaillierte Inhalt vonTechnisches Tutorial zum Erstellen von Blog-Websites – entwickelt mit Beego. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!