文档章节

和lock一起学beego 博客系统开发为例(二)

lock-li
 lock-li
发布于 2016/06/14 18:07
字数 1364
阅读 1307
收藏 3

接着上篇来写《和lock一起学beego 博客系统开发为例(一)

这篇主要完成以下事项:

1.beego框架,项目的建立

 2.  表数据的设计

 3.  模型的建立

(这篇在公司里写的,用的是win机器)

 一、beego项目的建立

beego自带的工具bee是一个非常好的工具,可以创建项目及API接口等。所以在建立项目之前,务必先下载bee工具,

在命令符下:

go get github.com/beego/bee

安装好后,可以在系统环境变量加添加bee的路径,方便后续直接bee 命令执行

以win为例:这个目录会有bee.exe

C:\GOPATH\bin

现在可以直接在cmd下,bee命令测试了。

我们可以切换到C:\GOPATH\src目录下,用bee new blog命令来创建项目

bee new blog

会自动生成如下文件:

这样beego项目创建完成了。

在这里介绍一下bee的命令常用参数:

new :创建新项目
run  :运行项目,默认是以8080端口运行,可以在浏览器运行localhost:8080,出会提示页面

api :是用来创建api项目的,生成的目录略有不同

 

二、表数据的设计

既然是简单的博客,那么表也是很常用的,如下

article:博客文章表

comment:博客评论表

user:用户表

user_profile:用户详细表

album:相册表

这几张表,足够玩转一个blog了~因为是简单blog吗~

在这里说明一下,如果在项目里创建model话,可以自动生成表,这里先不作说明,直接给SQL语句,在库中直接运行,库名称:blog

CREATE TABLE `album` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL DEFAULT '' COMMENT '文章标题',
  `picture` varchar(255) DEFAULT '' COMMENT 'Picture',
  `keywords` varchar(2550) DEFAULT '' COMMENT '关键词',
  `summary` varchar(255) DEFAULT '',
  `created` int(10) DEFAULT '0' COMMENT '发布时间',
  `viewnum` int(10) DEFAULT '0' COMMENT '阅读次数',
  `status` tinyint(1) DEFAULT '1' COMMENT '状态: 0草稿,1已发布',
  PRIMARY KEY (`id`),
  KEY `INDEX_TCVS` (`title`,`created`,`viewnum`,`status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='相册';


CREATE TABLE `article` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL DEFAULT '' COMMENT '文章标题',
  `uri` varchar(255) DEFAULT '' COMMENT 'URL',
  `keywords` varchar(2550) DEFAULT '' COMMENT '关键词',
  `summary` varchar(255) DEFAULT '',
  `content` longtext NOT NULL COMMENT '正文',
  `author` varchar(20) DEFAULT '' COMMENT '作者',
  `created` int(10) DEFAULT '0' COMMENT '发布时间',
  `viewnum` int(10) DEFAULT '0' COMMENT '阅读次数',
  `status` tinyint(1) DEFAULT '1' COMMENT '状态: 0草稿,1已发布',
  PRIMARY KEY (`id`),
  KEY `INDEX_TCVS` (`title`,`created`,`viewnum`,`status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章';


CREATE TABLE `user` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `phone` varchar(20) NOT NULL DEFAULT '' COMMENT '用户名',
  `password` varchar(255) NOT NULL DEFAULT '' COMMENT '密码',
  `created` int(10) DEFAULT NULL COMMENT '注册时间',
  `changed` int(10) DEFAULT NULL COMMENT '编辑时间',
  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态: 0屏蔽,1正常',
  `user_profile_id` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `user_profile_id` FOREIGN KEY (`id`) REFERENCES `user_profile` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户';



CREATE TABLE `user_profile` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `realname` varchar(15) DEFAULT NULL,
  `sex` tinyint(1) DEFAULT '1' COMMENT '1boy,0girl',
  `birth` varchar(20) NOT NULL DEFAULT '' COMMENT '生日',
  `email` varchar(20) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL,
  `address` varchar(255) NOT NULL DEFAULT '' COMMENT '地址',
  `hobby` varchar(255) NOT NULL DEFAULT '' COMMENT '爱好',
  `intro` text COMMENT '介绍',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户详情';



CREATE TABLE `comment` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `article_id` int(10) DEFAULT NULL,
  `nickname` varchar(15) DEFAULT NULL,
  `uri` varchar(255) DEFAULT NULL,
  `content` text,
  `created` int(10) DEFAULT '0',
  `status` tinyint(1) DEFAULT '1' COMMENT '0屏蔽,1正常',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='blog评论';

到此,表的设计已经全部完成。可以根据自己想法,多建立几个表,如标签表,文章分类表,相册分类表

三、Beego中表模型建立

在go语言中,有一个非常强大的struct,可以自定义和引用;在beego中,我们的表模型其实就是用struct属性。

先以article表为例:

struct里定义的,就是article表中的字段,如下:

type Article struct {
	Id       int
	Title    string
	Uri      string
	Keywords string
	Summary  string
	Content  string
	Author   string
	Created  int64
	Viewnum  int
	Status   int
}

接下来,我详细介绍一下。

在models文件夹下建立一个文件:article.go,文件内容如下:

package models

import (
	"time"

	"github.com/astaxie/beego/orm"
	_ "github.com/go-sql-driver/mysql"
)

type Article struct {
	Id       int
	Title    string
	Uri      string
	Keywords string
	Summary  string
	Content  string
	Author   string
	Created  int64
	Viewnum  int
	Status   int
}

func (this *Article) TableName() string {
	return "article"
}

func init() {
	orm.RegisterModel(new(Article))
}

我们再看一下user模型:在models建立文件,user.go

这里建立了关联的表,一对一关系,在beego中表的命名是以驼峰形式命名的,如UserProfile,在数据库其实是 user_profile形式存在,会自动以大写字母分割加下划线生成表名。

在注册多表模型的时候,orm.RegisterModel(new(User), new(UserProfile)) 来初始化。

package models

import (
	"fmt"

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

type User struct {
	Id          int
	Phone       string
	UserProfile *UserProfile `orm:"rel(one)"`
	Password    string
	Status      int
	Created     int64
	Changed     int64
}
type UserProfile struct {
	Id       int
	Realname string
	Sex      int
	Birth    string
	Email    string
	Phone    string
	Address  string
	Hobby    string
	Intro    string
	User     *User `orm:"reverse(one)"`
}

func (this *User) TableName() string {
	return "user"
}
func init() {
	orm.RegisterModel(new(User), new(UserProfile)) //
}

其它表的模型建立和上面的差不多,自己试着建立一下;如果中间报错,可能是一些包或变量未使用,编译的时候会出错,这没事,自己试着会注释。在保存的时候,bee run会自动检测出错误,大家要学会使用。

最后截图看看:

 

好的,今天先介绍到这里,下篇主要完成以下工作:

1.模型里如何创建方法

 2.  数据库的引用

 3.  beego的配置文件使用

© 著作权归作者所有

共有 人打赏支持
lock-li

lock-li

粉丝 40
博文 73
码字总数 34522
作品 1
松江
CTO(技术副总裁)
私信 提问
和lock一起学beego 博客系统开发为例(三)

mongodb: MongoDB(二):基础知识 Django学习笔记:为Model添加Action 和lock一起学beego 博客系统开发为例(三) 深入Go语言 - 1 django captcha imagintft: 关于captcha使用The _imagingft C ...

d_watson
2016/06/16
18
0
和lock一起学beego 博客系统开发为例(七)

接着上篇来写《和lock一起学beego 博客系统开发为例(六)》 这篇主要完成以下事项: 下篇我们要完成下面三个任务: 1、单图上传 2、多图上传 关于图片上传的功能介绍完,博客系统基本开发流程...

lock-li
2016/06/22
432
0
和lock一起学beego 博客系统开发为例(四)

最近在看欧洲杯,没空写。今天周六刚好写一篇。 接着上篇来写《和lock一起学beego 博客系统开发为例(三)》 这篇主要完成以下事项: 下篇我们要完成下面三个任务: 1、控制器的使用 2、路由的...

lock-li
2016/06/18
571
0
和lock一起学beego 博客系统开发为例(三)

接着上篇来写《和lock一起学beego 博客系统开发为例(二)》 这篇主要完成以下事项: 1.模型里如何创建方法 2. 数据库的引用 3. beego的配置文件使用 一、模型里如何创建方法 在上篇中,我们...

lock-li
2016/06/15
710
0
和lock一起学beego 博客系统开发为例(五)

接着上篇来写《和lock一起学beego 博客系统开发为例(四)》 这篇主要完成以下事项: 下篇我们要完成下面三个任务: 1、模板的使用 2、基控制器BaseController的定义 3、session的使用 一、模板...

lock-li
2016/06/19
410
0

没有更多内容

加载失败,请刷新页面

加载更多

Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
22分钟前
0
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
28分钟前
0
0
大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
今天
2
0
hadoop垃圾回收站

在生产生,hdfs回收站必须是开启的,一般设置为7天。 fs.trash.interval 为垃圾回收站保留时间,如果为0则禁用回收站功能。 fs.trash.checkpoint.interval 回收站检查点时间,一般设置为小于...

hnairdb
昨天
1
0
腾讯与Github的魔幻会面背后的故事…

10月22日,腾讯开源管理办公室有幸邀请到Github新晋CEO Nat Friedman,前来鹅厂参观交流。目前腾讯已经有近70个项目在Github上开源,共获得17w stars,世界排名11位。Github是腾讯开源的主阵...

腾讯开源
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部