Goweb开发之Beego框架实战:第八节 写文章功能
点击写文章,我们进入写文章的页面,当用户点击按钮进行提交后,应该将文章的数据存入到数据库中。
一、数据库
首先我们先设计数据库,用户提交的文章,包含标题,标签,简介,内容, 创建时间等。
在mysqlUtils.go文件中,添加article表的操作:
//创建文章表
func CreateTableWithArticle(){sql:=`create table if not exists article(id int(4) primary key auto_increment not null,title varchar(30),author varchar(20),tags varchar(30),short varchar(255),content longtext,createtime int(10));`ModifyDB(sql)
}
二、Model
在model目录下创建一个go文件:article_model.go
package models
import "myblog/utils"
type Article struct {Id intTitle stringTags stringShort stringContent stringAuthor stringCreatetime int64//Status int //Status=0为正常,1为删除,2为冻结
}
//---------数据处理-----------
func AddArticle(article Article) (int64, error) {i, err := insertArticle(article)return i, err
}
//-----------数据库操作---------------
//插入一篇文章
func insertArticle(article Article) (int64, error) {return utils.ModifyDB("insert into article(title,tags,short,content,author,createtime) values(?,?,?,?,?,?)",article.Title, article.Tags, article.Short, article.Content, article.Author, article.Createtime)
}
目前我们只是写文章,所以需要的是添加数据。
三、Controller
首先创建一个controller文件,add_article_controller.go。
package controllers
import ("fmt""myblog/models""time"
)
type AddArticleController struct {BaseController
}
/*
当访问/add路径的时候回触发AddArticleController的Get方法
响应的页面是通过TpName*/
func (this *AddArticleController) Get() {this.TplName = "write_article.html"
}
//通过this.ServerJSON()这个方法去返回json字符串
func (this *AddArticleController) Post() {
//获取浏览器传输的数据,通过表单的name属性获取值title := this.GetString("title")tags := this.GetString("tags")short := this.GetString("short")content := this.GetString("content")fmt.Printf("title:%s,tags:%s\n", title, tags)
//实例化model,将它出入到数据库中
art := models.Article{0, title, tags, short, content, "千锋教育", time.Now().Unix()}_, err := models.AddArticle(art)
//返回数据给浏览器var response map[string]interface{}if err == nil {//无误response = map[string]interface{}{"code": 1, "message": "ok"}} else {response = map[string]interface{}{"code": 0, "message": "error"}}
this.Data["json"] = responsethis.ServeJSON()
}
如果用户请求写文章路径,会展示write_article.html页面。添加完信息后,点击提交按钮,进行提交数据。
然后注册一个新的路由:
//写文章
beego.Router("/article/add", &controllers.AddArticleController{})
四、View
我们在views目录下创建一个html文件(write_article.html),用于写文章。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>写文章</title><link href="../static/css/blogsheet.css" rel="stylesheet"><script src="../static/js/lib/jquery-3.3.1.min.js"></script><script src="../static/js/lib/jquery.url.js"></script><script src="../static/js/blog.js"></script>
</head>
<body>
{{template "block/nav.html" .}}
<div id="main"><form id="write-art-form" method="post"><div>标题</div><input type="text" placeholder="请输入标题" name="title" ><div>标签</div><input type="text" placeholder="请输入标签" name="tags" ><div>简介</div><textarea placeholder="请输入简介" name="short"></textarea><div>内容</div><textarea id="content" placeholder="请输入内容" name="content"></textarea><input id="write-article-id" hidden name="id" ><br><button type="button" onclick="history.back()">返回</button><button type="submit" id="write-art-submit">提交</button></form>
</div>
</body>
</html>
接下来写js脚本文件,打开static/js目录下的blog.js文件。
//添加文章的表单$("#write-art-form").validate({rules: {title: "required",tags: "required",short: {required: true,minlength: 2},content: {required: true,minlength: 2}},messages: {title: "请输入标题",tags: "请输入标签",short: {required: "请输入简介",minlength: "简介内容最少两个字符"},content: {required: "请输入文章内容",minlength: "文章内容最少两个字符"}},submitHandler: function (form) {var urlStr = "/article/add";alert("urlStr:" + urlStr);$(form).ajaxSubmit({url: urlStr,type: "post",dataType: "json",success: function (data, status) {alert(":data:" + data.message);setTimeout(function () {window.location.href = "/"}, 1000)},error: function (data, status) {alert("err:" + data.message + ":" + status)}});}})
五、运行
运行项目后,打开浏览器,登录后进入首页,点击写文章:
然后进入写文章页面:
点击按钮进行提交,然后查询数据库,数据已经被插入进去了:
Goweb开发之Beego框架实战:第八节 写文章功能相关推荐
- iOS开发之SceneKit框架--实战地月系统围绕太阳旋转
1.创建地月太阳系统scn文件 注意:moon在earth结构下,earth和moon在sun结构下. 2.获取scn中模型的对应节点和自转(太阳为例) 获取节点: name是对应的Identity字 ...
- iOS开发之AVKit框架使用
2019独角兽企业重金招聘Python工程师标准>>> iOS开发之AVKit框架使用 一.引言 在iOS开发框架中,AVKit是一个非常上层,偏应用的框架,它是基于AVFounda ...
- iOS开发之Accounts框架详解
2019独角兽企业重金招聘Python工程师标准>>> iOS开发之Accounts框架详解 Accounts框架是iOS原生提供的一套账户管理框架,其支持Facebook,新浪微博 ...
- Android监听作用,Android开发之CheckBox的简单使用与监听功能示例
本文实例讲述了Android开发之CheckBox的简单使用与监听功能.分享给大家供大家参考,具体如下: activity_main.xml android:layout_width="ma ...
- JavaEE开发之SpringBoot框架深入剖析项目实战(魔乐科技)
课程目录& `) t. s # W, g, ]" O 第1篇: SpringBoot入门" _0 ?2 t- e; f, r 小节1: S ...
- beego model获取controller_Goweb开发-Beego框架实战教程:项目搭建及注册用户
一.搭建项目 首先打开终端进入gopath下的src目录,然后执行以下命令,创建一个beego项目: bee new myblogweb 运行效果如下: 然后通过goland打开该项目: 我们打开co ...
- (0068)iOS开发之AutoLayout框架Masonry使用心得
苹果官方给出了一些有关自动布局的建议 不论用interfaceBuilder还是用代码来实现自动布局,这些建议都是适用的. (1)不用view的frame.bounds.center来指定view的形 ...
- iOS开发之Masonry框架-源码解析
Masonry是iOS在控件布局中经常使用的一个轻量级框架.Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...
- iOS开发之Masonry框架源码解析
Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...
最新文章
- 医疗信息化:高可用、安全两手都要硬
- 用Docker安装Gitlab
- FreeBSD上安装Cassandra 3.10
- Shell Basic
- linux系统添加网卡驱动,Linux 2.6.35内核配置和网卡驱动添加
- boost::log模块实现从设置文件初始化库的示例,具有自定义过滤器和格式化程序工厂的属性
- different styles of button in footer area
- 【附源码】为了帮助程序员谈恋爱,我做了这个APP
- hog函数的用法 python_Python常见内置函数用法(三)
- java 持续集成工具_Jenkins-Jenkins(持续集成工具)下载 v2.249.2官方版--pc6下载站
- Linux: chmod 和 chown用法小结
- AndroidStudio_gradle依赖相关错误的处理_Minimum supported Gradle version is 6.5. Current等---Android原生开发工作笔记228
- [转载] python 判断字符串是否包含另一个字符串_强烈推荐:Python字符串(string)方法整理(一)...
- Vs2010中水晶报表引用及打包
- IMPORT MULTIPLE JS
- 结构变量输入不正确的顺序可能会导致不正确的操作结果
- 健身管理系统一站式智能化健身管理体验
- linux下终端快捷键
- 光立方原理讲解_3D打印设备SLA工艺原理是什么?
- c语言编程一个超市购物程序,急求一超市的销售记录C程序(各位大哥帮帮忙啊!)...
热门文章
- C#使用委托实现信用卡用户定时还款功能
- 归并排序 (递归+非递归)
- 我敢说,没人能超过这份产品经理推荐书单(40本)!
- JMeter直连数据库报错Uncaught Exception java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z
- 位与:一个数1的结果
- 分布式IM原理与实战: 从0到1打造即时通讯云
- html关灯游戏,关灯小游戏 - 在线打字测试(dazi.kukuw.com)
- PR时间轴模板 企业发展融资历程PR动态图形模板MOGRT
- spring同类方法调用事务使用说明
- Linux -- vim编辑器使用教程