本章节主要学习下beego 文章评论的添加、删除、展示以及文章分类的关联处理。
controllers文件夹下添加reply.go,源码:
package controllers
import (
"github.com/astaxie/beego"
"myapp/models"
)
type ReplyController struct {
beego.Controller
}
func (this *ReplyController) Add() {
tid := this.Input().Get("tid")
err := models.AddReply(tid,
this.Input().Get("nickname"), this.Input().Get("content"))
if err != nil {
beego.Error(err)
}
this.Redirect("/topic/view/"+tid, 302)
}
func (this *ReplyController) Delete() {
if !checkAccount(this.Ctx) {
return
}
tid := this.Input().Get("tid")
err := models.DeleteReply(this.Input().Get("rid"))
if err != nil {
beego.Error(err)
}
this.Redirect("/topic/view/"+tid, 302)
}
models文件下models.go添加:
func AddReply(tid, nickname, content string) error {
tidNum, err := strconv.ParseInt(tid, 10, 64)
if err != nil {
return err
}
reply := &Comment{
Tid: tidNum,
Name: nickname,
Content: content,
Created: time.Now(),
}
o := orm.NewOrm()
_, err = o.Insert(reply)
return err
}
func GetAllReplies(tid string) (replies []*Comment, err error) {
tidNum, err := strconv.ParseInt(tid, 10, 64)
if err != nil {
return nil, err
}
replies = make([]*Comment, 0)
o := orm.NewOrm()
qs := o.QueryTable("comment")
_, err = qs.Filter("tid", tidNum).All(&replies)
return replies, err
}
func DeleteReply(rid string) error {
ridNum, err := strconv.ParseInt(rid, 10, 64)
if err != nil {
return err
}
o := orm.NewOrm()
reply := &Comment{Id: ridNum}
_, err = o.Delete(reply)
return err
}
其他修改:
模板修改(添加评论、删除评论、以及分类展示等处理)
routers/router.go修改,添加回复的路由处理
controller/home.go修改,添加分类的读取,以及分类和文章的关联处理。
github:https://github.com/yangsir/beego_study
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/98494.html