Maison > développement back-end > Golang > le corps du texte

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

WBOY
Libérer: 2023-06-22 13:16:42
original
1215 Les gens l'ont consulté

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"
Copier après la connexion

)

//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)"`
Copier après la connexion

}

//Category
type Category struct {

Id       int64
Title    string
Articles []*Article `orm:"reverse(many)"`
Copier après la connexion

}

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"
Copier après la connexion

)

type ArticleController struct {

BaseController
Copier après la connexion

}

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"
Copier après la connexion

}

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)
Copier après la connexion

}

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)
Copier après la connexion

}

func (ce *ArticleController) Supprimer() {

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

this.Redirect("/article/list", 302)
Copier après la connexion

}

func (this *ArticleController) Detail() {

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

article := models.GetArticleById(id)
this.Data["Article"] = article

this.TplName = "article/detail.html"
Copier après la connexion

}

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>
Copier après la connexion


{{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>
Copier après la connexion


{{template "footer.html" .}}

//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>
Copier après la connexion


{{template "footer.html" .}}

//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>
Copier après la connexion


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

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal