文档章节

beego的一个web程序

 七夜大魔君
发布于 2014/06/26 14:35
字数 667
阅读 52
收藏 1

最近学习golang也有一段时间了,基础差不多学了个大概,因为本人是java程序员,所以对web更感兴趣。根据《go web编程》中的例子改编一个更简单的例子,供新手参考,废话不多说,上菜:

    这个例子使用到了beego框架和beedb框架,如果是go新手beego和beedb得自己去google下载安装。

    目录结构:

index.go


01 package controllers
02
03 import (
04     "fmt"
05     "github.com/astaxie/beego"
06     "login/models"
07 )
08
09 type IndexController struct {
10     beego.Controller
11 }
12
13 func (index *IndexController) Get() {
14     sess := index.StartSession()
15     username := sess.Get("username")
16     fmt.Println(username)
17     if username == nil || username == "" {
18         index.TplNames = "index.tpl"
19     } else {
20         index.TplNames = "success.tpl"
21     }
22
23 }
24
25 func (index *IndexController) Post() {
26     sess := index.StartSession()
27     var user models.User
28     inputs := index.Input()
29     //fmt.Println(inputs)
30     user.Username = inputs.Get("username")
31     user.Pwd = inputs.Get("pwd")
32     err := models.ValidateUser(user)
33     if err == nil {
34         sess.Set("username", user.Username)
35         fmt.Println("username:", sess.Get("username"))
36         index.TplNames = "success.tpl"
37     } else {
38         fmt.Println(err)
39         index.TplNames = "error.tpl"
40     }
41 }

regist.go



01 package controllers
02
03 import (
04     "fmt"
05     "github.com/astaxie/beego"
06     "login/models"
07 )
08
09 type RegistController struct {
10     beego.Controller
11 }
12
13 func (this *RegistController) Get() {
14     this.TplNames = "regist.tpl"
15 }
16
17 func (this *RegistController) Post() {
18     var user models.User
19     inputs := this.Input()
20     //fmt.Println(inputs)
21     user.Username = inputs.Get("username")
22     user.Pwd = inputs.Get("pwd")
23     err := models.SaveUser(user)
24     if err == nil {
25         this.TplNames = "success.tpl"
26     } else {
27         fmt.Println(err)
28         this.TplNames = "error.tpl"
29     }
30 }

models.go



01 package models
02
03 import (
04     "database/sql"
05     "errors"
06     "fmt"
07     "github.com/astaxie/beedb"
08     _ "github.com/ziutek/mymysql/godrv"
09 )
10
11 type User struct {
12     Id       int `PK`
13     Username string
14     Pwd      string
15 }
16
17 func getLink() beedb.Model {
18     db, err := sql.Open("mysql", "root:root@tcp(192.168.1.81:3306)/test_my?charset=utf8")
19     if err != nil {
20         panic(err)
21     }
22     orm := beedb.New(db)
23     return orm
24 }
25
26 func SaveUser(user User) error {
27     orm := getLink()
28     fmt.Println(user)
29     err := orm.Save(&user)
30     return err
31 }
32
33 func ValidateUser(user User) error {
34     orm := getLink()
35     var u User
36     orm.Where("username=? and pwd=?", user.Username, user.Pwd).Find(&u)
37     if u.Username == "" {
38         return errors.New("用户名或密码错误!")
39     }
40     return nil
41 }

main.go


01 package main
02
03 import (
04     //"fmt"
05     "github.com/astaxie/beego"
06     "login/controllers"
07 )
08
09 type MainController struct {
10     beego.Controller
11 }
12
13 func main() {
14     beego.SessionOn = true
15     beego.RegisterController("/", &controllers.IndexController{})
16     beego.RegisterController("/regist", &controllers.RegistController{})
17     beego.Run()
18 }


error.tpl



1 <html>
2     <body>
3             error
4     </body>
5 </html>

success.tpl



1 <html>
2     <body>
3             successed
4     </body>
5 </html>

index.tpl



01 <html>
02     <body>
03         <h1>login</h1>
04         <form action="/" method="post">
05             用户名:<input type="text" name="username"><br>
06             密码:<input type="password" name="pwd"><br>
07             <input type="submit" value="登录"><br>
08             <a href="/regist">注册</a>
09         </form>
10     </body>
11 </html>

regist.tpl

01 <html>
02     <body>
03         <h1>regist</h1>
04         <form action="/regist" method="post">
05             用户名:<input type="text" name="username"><br>
06             密码:<input type="password" name="pwd"><br>
07             <input type="submit" value="注册">
08         </form>
09     </body>
10 </html>

数据库用的是mysql,建表语句

 

1 CREATE TABLE user (
2 id      INT,
3 username   VARCHAR(32),
4 pwd VARCHAR(32),
5 PRIMARY KEY(id)
6 );

  程序跑起来是没有问题,但是session老是取不到数据,求大神解释!


© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 1
码字总数 667
作品 0
济南
如何做到不用beego配置文件又不让系统报错

@astaxie 你好,想跟你请教个问题:本人有个服务器端的应用程序,现在想在现有的应用程序里用beego框架开发一个管理Web界面。由于该应用程序已经有XML配置文件了,所以不想要beego默认的配置...

hezhixiongbei
2015/12/25
321
0
beego 视频教程--beegoCasts

beego的文档应该还算比较完整的,但是我还是希望通过更多地素材来推进beego的发展,视频教程应该是一个非常直观的学习方式,所以决定在发布beego1.2之后开始制作一系列的beego视频教程,主要教大...

astaxie
2014/05/18
1K
1
使用beego框架开发个人博客(一)

安装配置 需要先安装配置 Golang,然后安装配置 beego,是一个使用 Go 的思维来帮助您 构建并开发 Go 应用程序的开源Web开发框架,的中文文档很友好,请自行查看 beego 安装配置完成之后,使用...

CoderMiner
07/05
0
0
go语言实现一个简单的登录注册web小程序

最近学习golang也有一段时间了,基础差不多学了个大概,因为本人是java程序员,所以对web更感兴趣。根据《go web编程》中的例子改编一个更简单的例子,供新手参考,废话不多说,上菜: 这个例...

chengxw
2013/04/25
0
2
mac下安装beego,使用bee创建和运行项目

安装golang就不详细说了,下载pgk包安装,默认安装安装在 /usr/local/go 目录。 程序会自动设置环境变量,go env 可查看目前的go的环境变量。 现在GO可以执行了,在命令行输入 go version可查...

东子
2016/10/20
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

Bash工作管理详解

Bash工作管理 Bash的工作是对具体任务的一个抽象表述,更确切的说是对管道的应用上的表述。Bash中的工作在形式上表现为一组相关进程或单个进程。工作进程组分为前台和后台,前台进程会对键盘...

小陶小陶
11分钟前
1
0
Qt那些事0.0.1

LIBS += -L$$PWD/lib/ -lStv1QMAKE_POST_LINK += $$QMAKE_COPY $$replace(PWD,"/","\\")\lib\Stv1.dll $$replace(OUT_PWD,"/","\\")\debug\Stv1.dll pro文件里,写起来按理说应该是轻松地......

Ev4n
20分钟前
1
0
如何正确的使用动态VPS(Linux)自动更换IP

背景 现在越来越多的人开始玩网赚项目,蚂蚁再小也是肉,薅羊毛的羊毛党越来越多,一些网赚项目也越来越受欢迎,但是一般的网赚项目都是要求真实用户的,所以要想获得大量的真实ip,一种动态...

bengozhong
26分钟前
1
0
分布式任务系统(LTS)部署学习使用

章节速览 背景介绍 环境部署 LTS架构原理&代码样例 个人心得经验 一、背景介绍 很多公司应该都会遇到job服务部署执行时:定时、并发、分布式这些问题。有的人就是只跑一个job服务,这样会简单...

硅步积千里
36分钟前
28
0
kotlin使用spring data redis(一)

1.引包 #忘记引用这个包的下场就是#nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfigcompile 'org.apache.commons:commons-p......

weidedong
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部