大家好,关于Goweb开发Beego框架实用教程:项目搭建和用户注册很多朋友都还不太明白,今天小编就来为大家分享关于的知识,希望对各位有所帮助!
然后通过goland打开项目:
我们打开conf包下的配置文件:app.conf文件,修改端口号为8080:
appname=myblogwebhttpport=8080runmode=dev 然后在终端中进入项目目录并运行项目:
我们可以看到该项目已经在运行并监听8080端口。接下来我们打开浏览器输入URL:http://127.0.0.1:8080/,然后我们就可以看到欢迎界面:
二、注册功能
2.1model
首先我们创建一个数据库:
我们首先创建一个工具包utils,然后创建一个go文件,用于制作mysql工具类,提供连接数据库和创建表的功能。
首先提供一个初始化方法:
func InitMysql() { fmt.Println(‘InitMysql.’) driverName :=beego.AppConfig.String(‘driverName’) //注册数据库驱动orm.RegisterDriver(driverName, orm.DRMySQL) //数据库连接用户:=beego.AppConfig.String(‘mysqluser’) pwd :=beego.AppConfig.String(‘mysqlpwd’) 主机:=beego.AppConfig.String(‘host’) 端口:=beego.AppConfig.String( ‘ port’) dbname :=beego.AppConfig.String(‘dbname’) //dbConn :=’root:yu271400@tcp(127.0.0.1:3306)/cmsproject?charset=utf8′ dbConn :=user + ‘:’ + pwd + ‘ @tcp(‘ + 主机+ ‘:’ + 端口+ ‘)/’ + dbname + ‘?charset=utf8′ //dbConn :=’root:yu271400@tcp(127.0.0.1:3306)/cmsproject?charset=utf8’ dbConn :=用户+ ‘:’ + pwd + ‘@tcp(‘ + 主机+ ‘:’ + 端口+ ‘)/’ + dbname + ‘?charset=utf8’ db, _=sql.Open(driverName, dbConn)然后设计数据表。我们需要用户的id 作为主键、用户名和密码以及状态。用于标记用户是否已被删除。 0表示正常状态,1表示已删除。还有注册时间,我们可以用整数时间戳来表示,所以sql语句如下:可以直接操作数据库创建,也可以通过代码创建:
//创建用户表func CreateTableWithUser() { sql :=`CREATE TABLE IF NOT EXISTS users( id INT(4) PRIMARY KEY AUTO_INCRMENT NOT NULL, username VARCHAR(64), password VARCHAR(64), status INT(4), createtime INT(10) );“ModifyDB(sql)} 然后提供执行sql语句的方法:
//操作数据库func ModifyDB(sql string, args .interface{}) (int64, error) { result, err :=db.Exec(sql, args.) if err !=nil { log.Println( err) return 0, err } count, err :=result.RowsAffected() if err !=nil { log.Println(err) return 0, err } return count, nil} 为后续数据库操作提供另一种方法:
//Query func QueryRowDB(sql string) *sql.Row{ return db.QueryRow(sql)} 然后在models中创建模型文件:
package modelsimport (‘myblogweb/utils”fmt’)type User struct { Id int Username string Password string Status int //0 正常状态, 1 deleteCreatetime int64}//——— – —-数据库操作—————–//插入func InsertUser(user User)(int64, error){ return utils.ModifyDB(‘insert into users( username ,password,status,createtime) values(?)’, user.Username,user.Password,user.Status,user.Createtime)}//根据条件查询func QueryUserWightCon(con string) int { sql :=fmt.Sprintf(‘从用户%s中选择id’,con) fmt.Println(sql) row:=utils.QueryRowDB(sql) id :=0 row.Scan(id) return id}//根据Username查询idfunc QueryUserWithUsername(username string) int{ sql :=fmt.Sprintf(‘where username=’%s”,username) return QueryUserWightCon(sql)}//查询idfunc QueryUserWithParam(username, based on username and password)password string)int{ sql:=fmt.Sprintf(‘where username=’%s’ and password=’%s”,username,password) return QueryUserWightCon(sql)}
2.2 view
我们首先在视图包html页面:register.html。
!DOCTYPE htmlhtml lang=’en’head meta charset=’UTF-8′ 标题注册/标题链接rel=’stylesheet’ type=’text/css’ href=’./static/css/lib/login.css’链接rel=’stylesheet’ type=’text/css’ href=’./static/css/blogsheet.css’ 脚本src=’./static/js/lib/jquery-3.3.1.min.js’ /script 脚本src=’./static/js/lib/jquery.url.js’/script 脚本src=’./static/js/blog.js’/script/headbody div id=’nav’ div id=’nav-login’ ul lia href=’/login’Login/a/li lia href=’/register’注册/a/li /ul /div /div div class=’htmleaf-container’ div class=’wrapper’ !–注册表单– div class=’container’ h1Welcome/h1 form id=’register-form’ class=’form’ input type=’text’ name=’username’ placeholder=’Username’输入类型=’密码’名称=’密码’占位符=’密码’id=’注册密码’输入类型=’密码’名称=’重新密码’占位符=’重新密码’br按钮类型=’提交’id=’登录-button’注册/按钮/form /div {{/*背景动画*/}} ul class=’bg-bubbles’ li/li li/li li/li li/li li/li li/li li/li li/li li/li li/li /ul /div /div/body/html 页面效果:
添加表单验证:
我们使用jquery来实现js部分。在js目录下创建子目录lib,将jquery框架文件放入其中,并引入到页面中。
然后重新创建一个js文件:blog.js
首先添加表单验证:
$(document).ready(function () { //注册表单验证$(‘register-from’).validate({rules:{ username:{ required:true, rangelength:[5,10] },password:{ required:true, rangelength:[5, 10] }, repassword:{ required:true, rangelength:[5,10], equalTo:’#register-password’ } }, messages:{ username:{ required:’请输入用户名’, rangelength:’用户名必须为5-10个字符’ }, password:{ required:’请输入密码’, rangelength:’密码必须为5-10个字符’ }, repassword:{ required:’请确认密码’, rangelength:’密码必须为5-10个字符’, equalTo:’输入两次的密码必须相等’ } },submitHandler:function (form) { var urlStr=’/register’; //alert(‘urlStr:’+urlStr) $(form).ajaxSubmit({ url:urlStr, type:’post’, dataType:’ json’, success:function (data ,status) {alert(‘data:’+data.message) if (data.code==1){ setTimeout(function () { window.location.href=’/login’ },1000) } }, err:function (data ,status) {alert(‘err:’+data.message+’:’+status) } }) } })}) 当用户点击表单的提交按钮时,会跳转到/注册路径,并且由于设置为post请求,所以我们可以在post中完成注册表。如果注册成功,跳转到/login路径。
2.3 controller
我们在controllers包下创建一个新的控制器来处理用户注册:
包控制器导入’github.com/astaxie/beego’type RegisterController struct { beego.Controller}func (this *RegisterController) Get(){ this.TplName=’register.html’}func (this *RegisterController) Post() { //获取表单信息username :=this.GetString(‘username’)password :=this.GetString(‘password’) repassword :=this.GetString(‘repassword’) fmt.Println(username, password) , repassword) log.INFO(用户名, 密码, repassword) //注册前,判断用户名是否已被注册。如果已注册,则返回错误id :=models.QueryUserWithUsername(username) fmt.Println(‘id:’ , id) if id 0 { this.Data[‘json’]=map[string]interface{}{‘code ‘: 0, ‘message’: ‘用户名已存在’} this.ServeJSON() return } //注册用户名和密码//存储的密码是md5后的数据,所以登录验证时,也需要判断md5后的用户密码和数据库中的密码password=utils.MD5(password) fmt.Println(‘After md5:’,password) user :=models.User{0, 用户名, 密码, 0, time.Now ().Unix()} _, err :=models.InsertUser(user) if err !=nil { this.Data[‘json’]=map[string]interface{}{‘code’: 0, ‘message’ : ‘注册失败’} } else { this.Data[‘json’]=map[string] interface{}{‘code’: 1, ‘message’: ‘注册成功’} } this.ServeJSON()}接下来,我们需要注册一个新的路由并修改router.go文件:
func init() { beego.Router(‘/’,controllers.MainController{}) beego.Router(‘/register’,controllers.RegisterController{})} 然后我们创建一个Post() 方法来处理post 请求:
//处理注册func (this *RegisterController) Post() { //获取表单信息username :=this.GetString(‘username’) password :=this.GetString(‘password’) repassword :=this.GetString(‘ repassword’) fmt.Println(username,password,repassword) //注册前,判断用户名是否已被注册。如果已注册,则返回错误id :=models.QueryUserWithUsername(username) fmt.Println(‘id:’ ,id) if id 0 { this.Data[‘json’]=map[string]interface{}{‘code ‘:0,’message’:’用户名已存在’} this.ServeJSON() return } //注册用户名和密码//存储的密码是md5后的数据,所以登录验证时,也需要判断md5后的用户密码和数据库中的密码password=utils.MD5(password) fmt.Println(‘After md5:’,password) user :=models.User{0,username,password,0,time.Now ().Unix()} _,err :=models.InsertUser(user) if err !=nil { this.Data[‘json’]=map[string]接口{}{‘code’:0,’message’: ‘注册失败’} }else{ this.Data[‘json’]=map[string]interface{ }{‘code’:1,’message’:’注册成功’} } this.ServeJSON()}想法是先接收表单信息,然后判断数据库中是否已存在该用户名。如果已经存在,则无法进行注册。我们可以通过json返回信息:用户名已经存在。
否则,在注册之前,为了密码安全,我们可以将密码的md5加密数据存储在数据库中。
所以在工具包中,添加另一个工具类:myUtils.go
package utilsimport (‘fmt’ ‘crypto/md5’)//传入的数据不同,那么MD5后的32位长度数据肯定会不同func MD5(str string) string{ md5str:=fmt.Sprintf ( ‘%x’,md5.Sum([]byte(str))) return md5str}
2.3 运行
我们打开终端,进入项目所在目录,执行命令:
蜜蜂跑
项目启动后监听8080端口。
并执行InitMysql()方法来初始化数据库。我们打开数据库进行刷新,数据表用户已经创建完成:
打开浏览器,输入以下网址:http://localhost:8080/register,然后输入用户名和密码进行注册。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/127098.html
用户评论
无寒
这篇博客干货满满! Beego 确实是 Go 语言下开发WEB应用的好选择,特别是对新手友好。学习这个框架感觉很顺畅,代码简洁易懂。 项目搭建流程清晰详细,注册用户部分也给了具体的实现案例,非常实用!
有6位网友表示赞同!
把孤独喂饱
Beego 这么强大的框架居然可以这样简单应用!太牛了!终于找到一篇真正适合初学者的 Beego 实战教程,之前好多都是概念理论性讲解,很难上手。希望能看到后续分享更多的实战项目内容!
有10位网友表示赞同!
情深至命
我一直想学习 Go语言开发 Web 应用,这篇教程正好给了我方向!Beego 的框架结构很清晰,作者的讲解逻辑也很流畅,把一个复杂的工程流程拆解得无比清晰易懂。期待后面的章节讲解其他功能模块。
有7位网友表示赞同!
清羽墨安
虽然代码简洁但是,看不懂,这个 Beego 也好复杂啊!感觉项目搭建步骤有点多,我更喜欢直接上手操作的教程。希望作者能提供更直观的示例和更详细的解释才能更好地理解框架的使用方法。
有5位网友表示赞同!
歇火
注册用户功能的实现部分很棒!代码结构清晰易读,注释也很到位,对于我这种刚接触 Beego 的新手来说非常实用。希望后续教程能够分享更多关于数据处理、安全等方面的实战案例。
有14位网友表示赞同!
不识爱人心
这篇教程对初学者友好度很高,但如果想要深入学习 Beego 框架,还需要自行查阅更高级的API文档和实战案例库。 框架的使用场景很多样化,需要根据实际情况选择合适的组件和模式,只有这样才能真正熟练掌握。
有14位网友表示赞同!
开心的笨小孩
Beego 的代码风格简洁明了,很好上手! 这篇教程清晰地介绍了项目搭建和用户注册流程,是学习 Beego 入门的好资源。希望以后能分享更多关于 Beego 中高级应用的经验分享。
有14位网友表示赞同!
哽咽
非常感谢作者分享如此实用的博客!Beego 框架确实值得一试,代码易读、性能稳定。这篇教程把框架的精髓总结得很好,让我迅速上手并编写了简单的项目。希望后续还有更多关于 Beego 框架的实战案例和深入讲解!
有17位网友表示赞同!
▼遗忘那段似水年华
我一直在寻找一份实践性强的 Beego 教程,终于找到了! 这篇博客的内容非常实用,特别是在项目搭建和注册用户部分做了详细的步骤说明,非常有帮助!
有8位网友表示赞同!
那伤。眞美
项目搭建流程太复杂了,对于零基础入门者来说有点难理解。希望作者能够提供更多针对新手用户的教程,比如使用 Beego 编写的简单案例程序。
有12位网友表示赞同!
减肥伤身#
整个教程讲解得很棒!Beego 的开发周期很短,项目部署也比较容易。这种框架非常适合快速 prototyping 和 MVP 的实现,期待在未来的文章中学习更多 Beego 的高级应用场景。
有19位网友表示赞同!
陌然淺笑
Beego 最大的优点就是代码简单易懂,上手快!这篇教程把基础部分讲解得很清楚,对于 Go 语言小白来说是一个很好的入门教材。
有17位网友表示赞同!
屌国女农
用户注册功能的实现案例很有帮助!让我更深刻地理解了 Beego 框架的逻辑结构和数据处理方式。希望后续教程能够讲解更多关于数据库操作、缓存机制等方面的实战应用
有12位网友表示赞同!
tina
很喜欢Beego 的代码简洁风格,这篇教程把关键点提炼得很到位。希望能看到更高质量的博客文章分享更高级的 Beego 应用场景和实战经验!
有9位网友表示赞同!
心已麻木i
发现 Beego 框架自带 ORM 功能还挺方便!这篇教程介绍清晰易懂,可以让我快速掌握 ORM 的基本使用方式 。
有13位网友表示赞同!
在哪跌倒こ就在哪躺下
学习 Beego 最难的是理解其路由和中间件机制。 希望作者能针对这些点提供更深入的讲解和实战案例,帮助我更好地掌握 Beego 的核心功能!
有19位网友表示赞同!
抚涟i
Beego 确实是一个不错的 Go 语言 Web 应用框架,这篇教程很好的介绍了它的基本使用流程。希望能看到更多关于 Beego 与其他技术栈整合的案例分享。
有8位网友表示赞同!
迷路的男人
学习这个教程之后,对 Beego 框架有了初步了解,但还是需要进行更深入的学习才能掌握它的全部功能和应用场景。 希望作者能够继续更新更多高质量的 Beego 文章!
有6位网友表示赞同!