文档章节

beego的一个web程序

 七夜大魔君
发布于 2014/06/26 14:35
字数 667
阅读 48
收藏 1
点赞 0
评论 0

最近学习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
mac下安装beego,使用bee创建和运行项目

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

东子
2016/10/20
1K
2
go语言实现一个简单的登录注册web小程序

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

chengxw
2013/04/25
0
2
OSC 第 74 期高手问答 — Go 应用框架 beego

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

叶秀兰
2015/05/20
8.6K
82
beego 1.0.0 正式版本发布,Go 应用框架

经过了四个多月的重构开发,beego 终于发布了第一个正式稳定版本。这个版本我们进行了重构,同时针对很多细节进行了改进。下面列一些主要的改进功能: 1. 模块化的设计,现在基本上 beego 做...

astaxie
2013/12/19
2.7K
23
【Go语言】【17】GO语言杂谈

本章节原想进一步写并写的相关知识,但今天不在状态临时改为杂谈,原因有二 我也想静静 (参见秋裤大叔) 对前面没有涉及到的问题给一个交待 一、安装Git 当下是一个开源的时代,经常遛论坛的...

qingkechina
2015/08/03
0
0
secondriver/go-box

Go-Box Go语言实践, 归档go语言开发,应用,代码包,帮助文档,学习资料 环境 Go SDK "下载" Go 开发工具LiteIDE "LiteIDE 是一款简单、开源、跨平台的 Go 语言 IDE" Go 环境搭建 应用 warm...

secondriver
2015/09/30
0
0
Go语言及Web框架Beego环境搭建手顺

本文涉及软件均以截至到2013年10月12日的最新版本为准 1、 相关软件准备: 1) go1.2rc1.windows-386.msi,对应32位windows系统安装使用 下载地址: https://code.google.com/p/go/downloads...

nop4ss
2015/08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

流利阅读笔记29-20180718待学习

高等教育未来成谜,前景到底在哪里? Ray 2018-07-18 1.今日导读 在这个信息爆炸的年代,获取知识是一件越来越容易的事情。人们曾经认为,如此的时代进步会给高等教育带来众多便利。但事实的...

aibinxiao
11分钟前
6
0
第15章FTP服务搭建与配置

15.1FTP介绍 FTP多用于Windows传文件到linux rz sz在文件超过4G,就无法使用了——>安装包yum install -y install lrzsz rz把 window 上的文件传输到 linux 上 sz 把 linux 上的文件传输到 ...

Linux学习笔记
19分钟前
0
0
OSChina 周三乱弹 —— 你被我从 osc 老婆们名单中踢出了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小鱼丁:分享五月天的单曲《后来的我们 (电影《后来的我们》片名曲)》: 《后来的我们 (电影《后来的我们》片名曲)》- 五月天 手机党少年们想...

小小编辑
24分钟前
6
1
Spring Boot Admin 2.0开箱体验

概述 在我之前的 《Spring Boot应用监控实战》 一文中,讲述了如何利用 Spring Boot Admin 1.5.X 版本来可视化地监控 Spring Boot 应用。说时迟,那时快,现在 Spring Boot Admin 都更新到 ...

CodeSheep
43分钟前
0
0
Python + Selenium + Chrome 使用代理 auth 的用户名密码授权

米扑代理,全球领导的代理品牌,专注代理行业近十年,提供开放、私密、独享代理,并可免费试用 米扑代理官网:https://proxy.mimvp.com 本文示例,是结合米扑代理的私密、独享、开放代理,专...

sunboy2050
今天
0
0
实现异步有哪些方法

有哪些方法可以实现异步呢? 方式一:java 线程池 示例: @Test public final void test_ThreadPool() throws InterruptedException { ScheduledThreadPoolExecutor scheduledThre......

黄威
今天
1
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

六库科技
今天
0
0
牛客网刷题

1. 二维数组中的查找(难度:易) 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入...

大不了敲一辈子代码
今天
0
0
linux系统的任务计划、服务管理

linux任务计划cron 在linux下,有时候要在我们不在的时候执行一项命令,或启动一个脚本,可以使用任务计划cron功能。 任务计划要用crontab命令完成 选项: -u 指定某个用户,不加-u表示当前用...

黄昏残影
昨天
0
0
设计模式:单例模式

单例模式的定义是确保某个类在任何情况下都只有一个实例,并且需要提供一个全局的访问点供调用者访问该实例的一种模式。 实现以上模式基于以下必须遵守的两点: 1.构造方法私有化 2.提供一个...

人觉非常君
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部