侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

go+beego框架项目中实现发布文章信息功能流程步骤

Go  /  管理员 发布于 3年前   650

接上一篇博文,在我的项目中开发发布文章功能

需求:

发布文章功能分两个插入步骤:

1.插入文章信息

2.拆分标签,循环插入标签信息


步骤:

一.路由

//创建文章
beego.Router("/addart", &controllers.ArtController{}, "get:Addart;post:Addart")

二.模型

1.文章模型

package models

import (
"github.com/astaxie/beego/orm"
)

//art表需显示的字段
type Art struct {
Art_id   int `orm:"column(art_id);pk"` // 设置主键
Title    string
Content  string
Cat_id   int
Author   string
User_id  int
Tags     string
Pubtime  string
Is_state int
Lastup   int
Comm     int
View     int
}

//实例
func init() {
orm.RegisterModel(new(Art))
}

//方法 编辑
func EditArt(art *Art) (int64, error) {
o := orm.NewOrm()
id, err := o.Update(art)
return id, err
}

//方法 添加
func AddArt(art *Art) (int64, error) {
o := orm.NewOrm()
//art := new(Art)
//art.Profile = profile
//art.Name = "slene"
id, err := o.Insert(art)
return id, err
}

2.标签模型

package models

import (
"github.com/astaxie/beego/orm"
)

//tag表需显示的字段
type Tag struct {
Tag_id  int `orm:"column(tag_id);pk"` // 设置主键
Art_id  int
Tagname string
Addtime string
}

//实例
func init() {
orm.RegisterModel(new(Tag))
}

//方法 编辑
func EditTag(tag *Tag) (int64, error) {
o := orm.NewOrm()
id, err := o.Update(tag)
return id, err
}

//方法 添加
func AddTag(tag *Tag) (int64, error) {
o := orm.NewOrm()
id, err := o.Insert(tag)
return id, err
}


三.控制器

package controllers

import (
"fmt"
"gblog/models"
"strconv"
"strings"
"time"

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

type ArtController struct {
BaseController
}

...

//添加数据
func (c *ArtController) Addart() {
//1.拿到数据
title := c.GetString("title")
content := c.GetString("content")
tags := c.GetString("tags")
cat_id, _ := strconv.Atoi(c.GetString("cat_id"))
//session user信息
username := c.GetSession("username").(string)
//接口类型interface int64转int
userid := int(c.GetSession("userid").(int64))

if c.Ctx.Request.Method == "POST" {
//2.对数据进行校验
if title == "" && content == "" {
c.ErrorJson(500, "标题/内容不能为空", nil)
}
//获取时间戳
s := time.Now().Unix()
timestamp := strconv.FormatInt(int64(s), 10)

art := models.Art{Title: title, Content: content, Cat_id: cat_id, Author: username, User_id: userid, Tags: tags, Pubtime: timestamp, Is_state: 0}
id, err := models.AddArt(&art)
if err != nil {
c.ErrorJson(500, "发布失败", nil)
}
//插入标签
ss := strings.Split(tags, ",")
for i := 0; i < len(ss); i++ {
tag := models.Tag{Art_id: int(id), Tagname: ss[i], Addtime: timestamp}
models.AddTag(&tag)
}

//改成事务方式

fmt.Println(art, id, err)
c.SuccessJson("发布成功")
}
fmt.Println("6666", title, cat_id, content, tags)

c.TplName = "addart.html"
}


四.视图

web编辑器我直接用的wangEditor很方便

{{template "public/header.html" .}}
<div class="row clearfix">
    <div class="col-md-8 column">
        <ul class="breadcrumb">
<li><a href="/">首页</a></li><li><a href="/user">个人中心</a></li><li class="active">发布文章</li>
</ul>
        <div>
         <p class="h-block"><strong>发布文章:</strong>
            <form class="h-block" id="myForm" method="post" action="/addart" role="form">
                <div class="form-group">
                    <span id="check_art" style="font-size: 8px;color: red;display: none;padding-left: 40%;"></span>
                    <label>标题:</label><input type="text" name="title" value="" class="form-control">
                    <label>栏目:</label>
                    <select name="cat_id" class="form-control">
                      {{range $ind, $elem := .cats}}
                      <option value="{{$elem.cat_id}}" >{{$elem.catname}}</option>
                      {{end}}
                    </select>
                    <label >内容:</label>
                    <div id="div-demo"></div>
                    <textarea name="content" id="text1" style="display: none"></textarea>
                    <label>标签:   ( 用英文逗号分隔 比如: 标签a , 标签b )</label>
                    <input type="text" name="tags" value="" class="form-control">
                </div>
                <button type="submit" class="btn btn-default">提交</button>
            </form>
        </p>
        </div>
        
    </div>
    <div class="col-md-4 column">
    </div>
</div>
{{template "public/footer.html" .}}
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/wangeditor@latest/dist/wangEditor.min.js"></script>
<script type="text/javascript">
    $(function (){
        var E = window.wangEditor
        if (document.getElementById('div-demo')) {
            var editor = new E('#div-demo')
            // 配置菜单栏,设置不需要的菜单
            editor.config.excludeMenus = [
                'italic',
                'underline',
                'strikeThrough',
                'indent',
                'emoticon',
                'video'
            ]
            editor.config.uploadImgShowBase64 = true
            editor.config.height = 200
            const $text1 = $('#text1')
            editor.config.onchange = function (html) {
                // 第二步,监控变化,同步更新到 textarea
                $text1.val(html)
            }
            editor.create()
            // 第一步,初始化 textarea 的值
            $text1.val(editor.txt.html())
        }
    });
</script>
<script type="text/javascript">
    $(document).ready(function() {
        // bind form using ajaxForm
        $('#myForm').ajaxForm({
            dataType:  'json',
            // success:   processJson
            success: function(data){
                if (data.Code == 500) {console.log(data);
                    alert(data.Msg);
                }else{
                    $("#check_art").html(data.Data);
                    $("#check_art").css("display","block");
                };
            }
        });
    });
</script>

效果图:

1.png



  • 上一条:
    在WordPress中更新PHP版本的流程步骤
    下一条:
    go语言中实现类型转换,了解一下cast组件
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2017-09
    • 2020-03
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-12
    • 2021-01
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-08
    • 2024-11
    • 2025-02
    • 2025-04
    • 2025-05
    • 2025-06
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客