需求:
用户访问get请i去,然后提交表单数据到post请求,在post请求中验证数据,如果验证不通过则提示不通过的消息,通过则提示成功的消息,然后重定向到get请求,get请求访问相应的页面,成功的话访问成功的页面,失败的访问失败的页面,**这就是一个消息提示,**可以使用flash来进行数据的传递
beego中的flsh:
* 这不是Adobe旗下的flsh产品
* flash 对象有三个级别的设置:
* Notice 提示信息
* Warning 警告信息
* Error 错误信息
* 模板中读取数据:
* { {.flash.error} } //错误 { {.flash.warning} } // 警告
{ {.flash.notice} } // 成功
示例:
~~~
type ValidateController struct {
beego.Controller
}
func (c *ValidateController) Get() {
// 获取flash中的数据,如果没有则跳转到表单页,否则跳转到对应的提示页
flash:=beego.ReadFromRequest(&c.Controller)
notice := flash.Data["notice"]
err := flash.Data["error"]
if len(notice) != 0 {// notice提示信息有数据,跳转到成功页
c.TplName = "success.html"
}else if len(err) != 0{// error提示信息有数据,跳转到失败页
c.TplName = "error.html"
}else { // 没数据,跳转到表单页
c.TplName = "validate.html"
}
}
func (c *ValidateController)Post() {
// 初始化flash
flash:=beego.NewFlash()
username := c.Input().Get("username")
if len(username) == 0 {
flash.Error("用户名不能为空")
flash.Store(&c.Controller) // 保存flash数据
c.Redirect("/flash_validate",302) // 重定向
}else if username != "zhiliao"{
flash.Error("用户名错误")
flash.Store(&c.Controller) // 保存flash数据
c.Redirect("/flash_validate",302) // 重定向
}else {
flash.Notice("验证通过")
flash.Store(&c.Controller) // 保存flash数据
c.Redirect("/flash_validate",302) // 重定向
}
}
~~~
上面的代码执行的大概逻辑是这样的:
1. Get 方法执行,因为没有 flash 数据,所以显示设置页面。
2. 用户设置信息之后点击递交,执行 Post,然后初始化一个 flash,通过验证,验证出错或者验证不通过设置 flash 的错误,如果通过了就保存设置,然后设置 flash 成功设置的信息。
3. 设置完成后跳转到 Get 请求。
4. Get 请求获取到了 Flash 信息,然后执行相应的逻辑,如果出错显示出错的页面,如果成功显示成功的页面。
- go环境搭建
- 解决go get网络慢的问题
- beego的安装
- bee的安装
- 编辑器
- go module
- 配置文件详解
- 配置文件其他说明
- 路由方法
- 路由
- 数据校验
- 校验函数
- 页面跳转
- 获取前端数据
- json文件的获取
- xsrf的用法
- xsrf的防护
- srfs和json的搭配
- flash的用法
- 过滤器
- url反转
- 各类数据的处理
- 模板函数
- 内置模板函数
- 自定义模板函数
- 模板
- 模板处理
- 模板渲染
- 视图文件的处理
- 静态文件
- 请求方式判断
- 验证码
- 另一种方法
- 分页类
- session
- 登录判断
- orm模块
- 使用方法
- mysql的安装
- 安装orm及驱动
- 建立模型
- 自定义模型
- 增删改查
- 高级查询
- 常见问题汇总
- 代码收藏
- 打包部署
- go build打包
- utils收藏
- 新goer容易犯的错
- 字符串操作