文档章节

beego的一个web程序

 七夜大魔君
发布于 2014/06/26 14:35
字数 667
阅读 55
收藏 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
mac下安装beego,使用bee创建和运行项目

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

东子
2016/10/20
1K
2
使用beego框架开发个人博客(一)

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

CoderMiner
07/05
0
0
OSC 第 74 期高手问答 — Go 应用框架 beego

OSCHINA 本期高手问答(5月20日- 5月26日)我们请来了 @astaxi(谢孟军)为大家解答关于 Go 应用框架 beego 方面的问题。 谢孟军,网名 @astaxie ,Gopher China 社区创始人,国内 Go 主要推...

叶秀兰
2015/05/20
8.6K
82

没有更多内容

加载失败,请刷新页面

加载更多

phpstorm xdebug 配置

xdebug方便了调试代码,比起一个一个地方的打印结果还是debug看的更明白下面介绍下maxOS系统下的debug配置 下载 https://xdebug.org/download.php 点击红线部分进入,粘贴phpinfo()信息推荐适...

被猪拱了的JAVA
22分钟前
2
0
Golang学习笔记(1)

基本知识 golang的文件格式以go结尾。 运行方式 go run main.go 用于开发调试使用 编译成二进制文件 go build main.go 会生成一个可执行的二进制文件 变量 变量定义的形式 Golang的变量定义有...

ExtreU
36分钟前
1
0
基于Kafka构建事件溯源模式的微服务

概要 本文中我们将讨论如何借助Kafka实现分布式消息管理,使用事件溯源(Event Sourcing)模式实现原子化数据处理,使用CQRS模式(Command-Query Responsibility Segregation )实现查询职责...

架构师springboot
43分钟前
1
0
git上传项目步骤

https://blog.csdn.net/m0_37725003/article/details/80904824

fame_yao
43分钟前
1
0
NOOBS自定义安装多系统

一、预置条件: 宿主系统是win10_x64 virtual box 虚拟机,安装了centos7 树莓派的系统安装工具:NOOBS_v2_9_0.zip,镜像文件 二、根据镜像文件生成boot.tar.xz 和root.tar.xz 1、设置共享目...

mbzhong
54分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部