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

Tutorial pembinaan laman web blog teknikal - dibangunkan menggunakan Beego

WBOY
Lepaskan: 2023-06-22 13:16:42
asal
1238 orang telah melayarinya

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"
Salin selepas log masuk

)

//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)"`
Salin selepas log masuk

}

//Category
type Category struct {

Id       int64
Title    string
Articles []*Article `orm:"reverse(many)"`
Salin selepas log masuk

}

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"
Salin selepas log masuk

)

taip ArticleController struct {

BaseController
Salin selepas log masuk

}

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"
Salin selepas log masuk

}

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)
Salin selepas log masuk

}

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)
Salin selepas log masuk

}

func (ini *ArticleController) Delete() {

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

this.Redirect("/article/list", 302)
Salin selepas log masuk

}

func (ini *ArticleController) Detail() {

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

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

this.TplName = "article/detail.html"
Salin selepas log masuk

}

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

<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>
Salin selepas log masuk

< /div>
{{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>
Salin selepas log masuk


{{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>
Salin selepas log masuk


{{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>
Salin selepas log masuk


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

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan