Heim > Backend-Entwicklung > Golang > Technisches Tutorial zum Erstellen von Blog-Websites – entwickelt mit Beego

Technisches Tutorial zum Erstellen von Blog-Websites – entwickelt mit Beego

WBOY
Freigeben: 2023-06-22 13:16:42
Original
1246 Leute haben es durchsucht

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.

Verwenden Sie den Befehl zum Installieren: go get github.com/astaxie/beego

go get github.com/beego/bee

3. Erstellen Sie ein Projekt und eine Konfiguration

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.

4. Blog-Funktion implementieren

1. Zuerst müssen Sie die blog.go-Datei in das Modellverzeichnis schreiben, um Datenbanktabellen zu erstellen, wie unten gezeigt:

Paketmodelle

import (

rrree

)

//Datenstruktur

//Article

type Artikelstruktur {

"github.com/astaxie/beego/orm"
"time"
Nach dem Login kopieren

}

//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)"`
Nach dem Login kopieren

}

2. Schreiben Sie die Datei „article.go“ in das Controller-Verzeichnis. Verwenden Um die artikelbezogenen Controller-Methoden wie folgt zu implementieren:

Paketcontroller

import (

Id       int64
Title    string
Articles []*Article `orm:"reverse(many)"`
Nach dem Login kopieren

)

type ArticleController struct {

"myblog/models"
"fmt"
"strconv"
"time"
Nach dem Login kopieren

}

func (dieser *ArticleController) List() {

BaseController
Nach dem Login kopieren

}

func (dieser *ArticleController) Add() {

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"
Nach dem Login kopieren

}

func (dieser *ArticleController) Update() {

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)
Nach dem Login kopieren

}

func (dieser *ArticleController) Delete() {

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)
Nach dem Login kopieren

}

func (this *ArticleController) Detail() {

id, _ := this.GetInt64(":id")
models.DeleteArticleById(id)

this.Redirect("/article/list", 302)
Nach dem Login kopieren

}

3. Datei anzeigen

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"
Nach dem Login kopieren


{{template "footer.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>
Nach dem Login kopieren


{{template "footer.html" .}}

//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>
Nach dem Login kopieren


{{template "footer.html" .}}

//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>
Nach dem Login kopieren


{{template "footer.html" .}}

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage