Maison  >  Article  >  développement back-end  >  Tutoriel de création de site Web de blog technique - développé avec Beego

Tutoriel de création de site Web de blog technique - développé avec Beego

WBOY
WBOYoriginal
2023-06-22 13:16:421128parcourir

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" .}}
dc6dce4a544fdca2df29d5ac0ea9906b

<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>

16b28748ea4df4d9c2150843fecfba68
{{template "footer.html" .}}

//article/add.html
{ {template "header.html" .}}
dc6dce4a544fdca2df29d5ac0ea9906b

<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>

16b28748ea4df4d9c2150843fecfba68
{{template "footer.html" .}}

//article/update.html
{{template "header .html" .}}
dc6dce4a544fdca2df29d5ac0ea9906b

<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>

16b28748ea4df4d9c2150843fecfba68
{{template "footer.html" .}}

//article/detail.html
{{template "header.html" . }}
dc6dce4a544fdca2df29d5ac0ea9906b

<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>

16b28748ea4df4d9c2150843fecfba68
{{template "footer.html" .}}

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn