1. 서문
요즘 기술 블로그는 프로그래머들이 소통하고, 상호 작용하고, 기술을 전시하고, 아이디어를 확장하는 중요한 플랫폼 중 하나가 되었습니다. 특정 프로그래밍 기반을 갖춘 프로그래머의 경우 개인화된 사용자 정의 및 무료 확장을 달성하기 위해 자신의 블로그를 개발하는 것이 점차 추세가 되었습니다.
이 기사에서는 편리하고 효율적이며 확장하기 쉬운 솔루션을 제공하는 것을 목표로 독자들이 Beego 프레임워크를 사용하여 자신만의 기술 블로그를 구축하도록 안내합니다.
2. Beego 프레임워크 소개
Beego는 Go 언어를 기반으로 개발된 웹 프레임워크로 Python의 Django 프레임워크와 Python의 Tornado 프레임워크에서 영감을 받았습니다. Beego는 RESTful API 개발도 지원하는 가볍고 배우기 쉬우며 효율적이고 유연한 웹 프레임워크입니다.
3. 환경 설정
1. Go 환경 설치
먼저 Go 환경을 설치해야 합니다. 자세한 내용은 공식 설명서를 참조하세요.
2. Beego 및 Bee 도구 설치
Beego와 Bee는 서로 다른 두 가지 도구입니다. Beego는 핵심 프레임워크이고 Bee는 Beego 프레임워크를 기반으로 하는 명령줄 도구로, 새 프로젝트를 만들고 컨트롤러, 모델을 만드는 데 사용할 수 있습니다. 뷰 등 개발 효율성이 크게 향상되었습니다.
설치 명령을 사용하세요: go get github.com/astaxie/beego
go get github.com/beego/bee
3. 프로젝트 및 구성 만들기
myblog라는 프로젝트 만들기: bee new myblog
그런 다음 myblog를 입력하세요. 디렉토리 :cd myblog
이제 myblog 디렉토리에 conf라는 폴더가 있을 것입니다. 내부의 app.conf는 여기서 데이터베이스의 연결 주소 및 포트 등과 같은 관련 구성을 만들 수 있습니다.
4. 블로그 기능 구현
1. 모델 디자인
먼저, 아래와 같이 데이터베이스 테이블을 생성하기 위해 blog.go 파일을 작성해야 합니다.
//Article
type Article struct {"github.com/astaxie/beego/orm" "time"}//Category
type Category 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)"`
2. Controller writing
article.go 파일을 Controllers 디렉토리에 작성합니다. 다음과 같이 기사 관련 컨트롤러 메소드를 구현하려면:
package Controllers
import (
Id int64 Title string Articles []*Article `orm:"reverse(many)"`
)
"myblog/models" "fmt" "strconv" "time"}func (this *ArticleController) List() {
BaseController}func(이 *ArticleController) Add() {
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(이 *ArticleController) Update() {
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(이 *ArticleController) 삭제() {
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 (this *ArticleController) Detail() {
id, _ := this.GetInt64(":id") models.DeleteArticleById(id) this.Redirect("/article/list", 302)}3. 파일 보기
다음과 같이 기사 관련 보기 파일을 저장하기 위해 views 디렉토리에 기사 디렉토리를 작성합니다.
//article/list .html
{{template "header.html" .}}dc6dce4a544fdca2df29d5ac0ea9906b
id, _ := this.GetInt64(":id") article := models.GetArticleById(id) this.Data["Article"] = article this.TplName = "article/detail.html"
16b28748ea4df4d9c2150843fecfba68
{{template "footer.html" .}}
//article/add.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/update.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/detail.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" .}}
5. 프로젝트 실행
터미널에서 bee run 명령을 사용하여 프로젝트를 시작한 다음 블로그에 액세스하려면 http://localhost :8080/article/list를 방문하세요.
이 글에서는 Beego 프레임워크의 사용법을 간략하게 소개하고 이를 기반으로 간단한 블로그 애플리케이션을 구현합니다. 이 기사를 연구함으로써 독자는 Beego 프레임워크의 기본 사용법을 미리 이해할 수 있습니다. 자세한 내용은 공식 문서를 참조하세요.
위 내용은 기술 블로그 웹사이트 구축 튜토리얼 - Beego를 사용하여 개발됨의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!