1. Avant-propos
De nos jours, les blogs technologiques sont devenus l'une des plateformes importantes permettant aux programmeurs de communiquer, d'interagir, d'afficher la technologie et d'élargir leurs idées. Pour les programmeurs ayant une certaine base de programmation, il est progressivement devenu une tendance de développer leurs propres blogs pour obtenir une personnalisation personnalisée et une expansion gratuite.
Cet article guidera les lecteurs dans l'utilisation du framework Beego pour créer leur propre blog technologique, dans le but de fournir une solution pratique, efficace et facile à développer.
2. Introduction au framework Beego
Beego est un framework web développé sur la base du langage Go. Sa conception est inspirée du framework Django de Python et du framework Tornado de Python. Beego est un framework Web léger, facile à apprendre, efficace et flexible qui prend également en charge le développement d'API RESTful.
3. Configuration de l'environnement
1. Installez l'environnement Go
Vous devez d'abord installer l'environnement Go pour les étapes spécifiques, veuillez vous référer à la documentation officielle pour l'installation.
2. Installez les outils Beego et Bee
Beego et Bee sont deux outils différents, Beego est le framework de base, et Bee est un outil de ligne de commande basé sur le framework Beego, qui peut être utilisé pour créer de nouveaux projets, créer des contrôleurs, des modèles, Vues, etc., efficacité de développement grandement améliorée.
Utilisez la commande pour installer : allez chercher github.com/astaxie/beego
allez chercher github.com/beego/bee
3 Créez un projet et une configuration
Créez un projet nommé myblog : bee new myblog
Ensuite, entrez dans monblog. répertoire :cd myblog
Il y aura maintenant un dossier nommé conf dans le répertoire myblog. Le app.conf à l'intérieur se trouve le fichier de configuration ici, comme l'adresse de connexion et le port de la base de données, etc.
4. Implémenter la fonction de blog
1. Conception du modèle
Tout d'abord, vous devez écrire le fichier blog.go dans le répertoire models pour créer des tables de base de données, comme indiqué ci-dessous :
modèles de package
import (
"github.com/astaxie/beego/orm" "time"
)
//Data structure
//Article
type Article struct {
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. Écriture du contrôleur
Écrivez le fichier article.go dans le répertoire des contrôleurs, using Pour implémenter les méthodes de contrôleur liées à l'article, comme suit :
package controllers
import (
"myblog/models" "fmt" "strconv" "time"
)
type ArticleController struct {
BaseController
}
func (this *ArticleController) List() {
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 (ce *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 (ce *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 (ce *ArticleController) Supprimer() {
id, _ := this.GetInt64(":id") models.DeleteArticleById(id) this.Redirect("/article/list", 302)
}
func (this *ArticleController) Detail() {
id, _ := this.GetInt64(":id") article := models.GetArticleById(id) this.Data["Article"] = article this.TplName = "article/detail.html"
}
3. View file
Écrivez le répertoire de l'article dans le répertoire des vues pour stocker les fichiers de vue liés à l'article, comme indiqué ci-dessous :
//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>
//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. Exécutez le projet
Utilisez la commande bee run dans le terminal pour démarrer le projet, puis visitez http://localhost :8080/article/list pour accéder au blog.
6. Résumé
Cet article présente brièvement l'utilisation du framework Beego et implémente une application de blog simple sur cette base. En étudiant cet article, les lecteurs peuvent avoir une compréhension préliminaire de l'utilisation de base du framework Beego. Pour plus de détails, veuillez vous référer à la documentation officielle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!