亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

使用beego框架開發個人博客(三)

標簽:
Go

在提交时,如果失败返回对应的错误码和错误信息

resp := utils.Response{
  Status: 0,
}
defer resp.WriteJson(this.Ctx.ResponseWriter)

err := blog.PostBlog(blog)if err != nil {
  resp = utils.Response{
    Status: -1,
    Msg:    "post blog error",
  }
}

前端页面逻辑

$.ajax({                    url:'/editor',                    method:'POST',                    data:{title:title,origin:origin,content:content},                    success:function(data){
                        alert(data)                        var resp = JSON.parse(data)                        if(resp.status == 0){                            window.location.href="/blog";
                        }else{
                            alert(JSON.parse(resp.msg))
                        }
                    }
                })

添加文章列表、详情页面

和之前的逻辑一样,添加对应的模板页面 index.html,添加对用的controller BlogController
和路由

package controllersimport "github.com/astaxie/beego"type BlogController struct {
    beego.Controller
}

func (this *BlogController) Get() {    this.TplName = "index.html"}
beego.Router("/blog", &controllers.BlogController{})

https://img1.sycdn.imooc.com//5d5df65e0001ab6608710741.png

效果图

从数据库中查询所有的数据

models

func (b *BlogModel) GetAllBlogs(page int) ([]BlogModel, error) {
    var blogs []BlogModel
    err := db.FindAllSort(database, collection, "-date", nil, nil, &blogs)    return blogs, err
}

controllers

func (this *BlogController) Get() {
    blogs, err := models.NewBlog().GetAllBlogs(0)    if err == nil {        this.Data["Blogs"] = blogs
    }    this.TplName = "index.html"}

index.html

{{range .Blogs}}<article class="post-card">
        <a class="post-card-image-link" href="/blog/{{.Id}}">
                {{if .Img}}                <div class="post-card-image" style="background-image: url({{.Img}})">

                </div>
                {{end}}        </a>
        <div class="post-card-content">
                <a class="post-card-content-link" href="">
                        <header class="post-card-header">
                                <span class="post-card-tags">Golang</span>

                                <h2 class="post-card-title">{{.Title}}</h2>
                        </header>
                        <section class="post-card-excerpt">
                                <p>
                                        {{.Summary}}                                </p>
                        </section>
                </a>
                <footer class="post-card-meta">
                        <span class="post-card-author">
                                <a >{{.Author}}</a>
                        </span>
                        <span class="post-card-date">{{dateformat .Date "2006年01月02日"}}</span>
                </footer>
        </div></article>{{end}}

https://img1.sycdn.imooc.com//5d5df6620001db0408850566.png

效果图

models

func (b *BlogModel) GetBlogById(id string) (BlogModel, error) {
    var blog BlogModel
    err := db.FindOne(database, collection, bson.M{"_id": id}, nil, &blog)    return blog, err
}

controllers

func (this *BlogController) Detail() {    id := this.Ctx.Input.Param(":id")
    data, err := models.NewBlog().GetBlogById(id)    if err == nil {        this.Data["Content"] = data
    } else {        this.Abort("404")
    }    this.TplName = "detail.html"}

routers

    beego.Router("/blog/:id", &controllers.BlogController{}, "get:Detail")

详情页面

<article class="post ">
                        <div class="post-head">
                            <h1 class="post-title">
                                {{.Content.Title}}                            </h1>
                            <div class="post-meta">
                                <span class="author">
                                    作者:                                    <a >{{.Content.Author}}</a>
                                </span>
                                <time class="post-date">{{dateformat .Content.Date "2006年01月02日"}}</time>
                            </div>
                        </div>

                        <div class="post-content markdown-body">
                            <p>{{str2html .Content.Content}}</p>
                        </div>

                        <footer class="post-footer clearfix">
                            <div class="pull-left tag-list">
                                <i class="fa fa-folder-open-o">
                                    {{range .Content.Tags}}                                    <a href="/blog/tag/{{.Id}}">{{.Name}}</a>
                                    {{end}}                                </i>
                            </div>
                        </footer>
                    </article>

完整的源码



作者:CoderMiner
链接:https://www.jianshu.com/p/bfba91045ad4

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 1
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消