Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tutorial pembinaan laman web blog teknikal - dibangunkan menggunakan Beego

Tutorial pembinaan laman web blog teknikal - dibangunkan menggunakan Beego

WBOY
WBOYasal
2023-06-22 13:16:421185semak imbas

1. Kata Pengantar
Hari ini, blog teknologi telah menjadi salah satu platform penting untuk pengaturcara berkomunikasi dan berinteraksi, mempamerkan teknologi dan meluaskan idea mereka. Bagi pengaturcara yang mempunyai asas pengaturcaraan tertentu, secara beransur-ansur menjadi trend untuk membangunkan blog mereka sendiri untuk mencapai penyesuaian peribadi dan pengembangan percuma.

Artikel ini akan membimbing pembaca untuk menggunakan rangka kerja Beego untuk membina blog teknologi mereka sendiri, bertujuan untuk menyediakan penyelesaian yang mudah, cekap dan mudah untuk dikembangkan.

2. Pengenalan kepada rangka kerja Beego
Beego ialah rangka kerja web yang dibangunkan berdasarkan bahasa Go. Reka bentuknya diinspirasikan oleh rangka kerja Django Python dan rangka kerja Tornado Python. Beego ialah rangka kerja web yang ringan, mudah dipelajari, cekap dan fleksibel yang turut menyokong pembangunan API RESTful.

3. Persediaan persekitaran
1. Pasang persekitaran Go
Mula-mula, anda perlu memasang persekitaran Go Untuk langkah khusus, sila rujuk dokumentasi rasmi untuk pemasangan.
2. Pasang alat Beego dan Bee
Beego dan Bee ialah dua alatan yang berbeza, dan Bee ialah alat baris arahan berdasarkan rangka kerja Beego, yang boleh digunakan untuk mencipta projek baharu, mencipta. Pengawal, Model, Pandangan, dsb., sangat meningkatkan kecekapan pembangunan.

Gunakan arahan untuk memasang: go get github.com/astaxie/beego
go get github.com/beego/bee

3 Cipta projek dan konfigurasi
Buat a projek bernama Myblog project: bee new myblog
Kemudian masukkan direktori myblog: cd myblog
Sekarang akan ada folder bernama conf dalam direktori myblog App.conf di dalam adalah fail konfigurasi Konfigurasi yang berkaitan, seperti alamat sambungan pangkalan data, port, dsb.

4. Laksanakan fungsi blog
1 Reka bentuk model
Pertama, anda perlu menulis fail blog.go dalam direktori model untuk mencipta jadual pangkalan data, seperti yang ditunjukkan di bawah:

model pakej

import (

"github.com/astaxie/beego/orm"
"time"

)

//struktur data
//artikel
taip struct Artikel {

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. Tulisan pengawal
Tulis fail article.go dalam direktori pengawal untuk pelaksanaan Kaedah pengawal yang berkaitan dengan artikel adalah seperti berikut:

pengawal pakej

import (

"myblog/models"
"fmt"
"strconv"
"time"

)

taip ArticleController struct {

BaseController

}

func (Senarai *ArticleController) ini() {

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 (ini *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 (ini *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 (ini *ArticleController) Delete() {

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

this.Redirect("/article/list", 302)

}

func (ini *ArticleController) Detail() {

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

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

this.TplName = "article/detail.html"

}

3. Lihat fail
Tulis direktori artikel dalam direktori pandangan untuk menyimpan maklumat berkaitan artikel Lihat fail, seperti yang ditunjukkan di bawah:

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

950c0e09a208ea6a6c67c615a801fbc6
{{template "footer.html" .}}

//article/add.html
{{template "header.html" .}}
60479f00b1bc9e77a06d7e77f2369b2a
{{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. Jalankan projek
Gunakan arahan bee run dalam terminal untuk memulakan projek, dan kemudian lawati http://localhost:8080/article/list untuk mengakses blog.

6. Ringkasan
Artikel ini memperkenalkan secara ringkas penggunaan rangka kerja Beego, dan melaksanakan aplikasi blog mudah atas dasar ini. Dengan mengkaji artikel ini, pembaca boleh mempunyai pemahaman awal tentang penggunaan asas rangka kerja Beego Untuk butiran lanjut, sila rujuk dokumentasi rasmi.

Atas ialah kandungan terperinci Tutorial pembinaan laman web blog teknikal - dibangunkan menggunakan Beego. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn