文档章节

Beego 的Contrller ParseForm的使用方法

SunnyGo
 SunnyGo
发布于 2016/05/12 16:03
字数 497
阅读 1.7K
收藏 1

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

 

如果要把表单里的内容赋值到一个 struct 里,除了用一个一个获取再赋值外,beego 提供了通过另外一个更便捷的方式,就是通过 struct 的字段名或 tag 与表单字段对应直接解析到 struct。

 

首先看模板是怎么提交的

 

<form id="user" action="/login" method="post">
    <label name="lab_username">username:</label>
    <input type="text" name="username" value="" />
    <label name="lab_pwd">password:</label><input type="password" name="pwd" value="" />
    <input type="submit" name="login" value="Login" />
</form>

 

接下来写struct

 

type Cmsuser struct {
    Id         int    `form:"-"`
    Username string `form:"username"`
    Pwd      string `form:"pwd"`
}

这里面有几点必须注意

1)变量名称的首字母必须大写,go lang的规定

2)其它

  • 定义 struct 时,字段名后如果有 form 这个 tag,则会以把 form 表单里的 name 和 tag 的名称一样的字段赋值给这个字段,否则就会把 form 表单里与字段名一样的表单内容赋值给这个字段。如上面例子中,会把表单中的 username 和 age 分别赋值给 user 里的 Name 和 Age 字段,而 Email 里的内容则会赋给 Email 这个字段。
  • 调用 Controller ParseForm 这个方法的时候,传入的参数必须为一个 struct 的指针,否则对 struct 的赋值不会成功并返回xx must be a struct pointer 的错误。
  • 如果要忽略一个字段,有两种办法,一是:字段名小写开头,二是:form 标签的值设置为 -

 

这个时候写好了Router就可以提交了。

func (this *LoginController) Post() {

u := Cmsuser{}
      if err := this.ParseForm(&u); err != nil {

        beego.Info(err)

    } else { //这个地方容易搞错,记住是没有错误的时候你就获得数据了。

       this.Ctx.WriteString(u.Username + u.Pwd)
    }

}

 

SunnyGo
粉丝 7
博文 29
码字总数 8325
作品 0
东城
技术主管
私信 提问
加载中
请先登录后再评论。
beego获取用户请求参数的方法

我们经常需要获取用户传递的数据,包括 Get、POST 等方式的请求,beego 里面会自动解析这些数据,你可以通过如下方式获取数据: GetString(key string) string GetStrings(key string) []st...

osc_dl4yv4ox
2018/06/12
1
0
直接解析到 struct

如果要把表单里的内容赋值到一个 struct 里,除了用上面的方法一个一个获取再赋值外,beego 提供了通过另外一个更便捷的方式,就是通过 struct 的字段名或 tag 与表单字段对应直接解析到 st...

浩爷
2018/01/16
34
0
beego 1.6.0 版本发布,Go 应用框架

距离上一次发布1.5版本已经半年了,这半年里面我们改进了很多,其实中间又想要发布一个小版本的,但是后来还是想想就改的彻底一点,所以这次改动相当多,中间又因为一些兼容性的问题所以特地...

astaxie
2016/01/18
1.2W
55
beego——模板处理

beego的模板处理引擎采用的是Go内置的html/template包进行处理,而且beego的模板处理逻辑是采用了缓存编译方式, 也就是所有的模板会在beego应用启动的时候全部编译然后缓存在map里面。 1.模...

osc_zfz9ur01
2018/12/16
0
0
beego 1.4.3 版本发布,Go 应用框架

这个版本憋了好久才发布,实在对不起各位亲,我持续改进的心都在,但是因为换工作事情比较多,实在抱歉。 新功能: ORM数据库创建和修改的时候支持default设置 改进日志文件行数统计 sesesion...

astaxie
2015/03/01
4.6K
32

没有更多内容

加载失败,请刷新页面

加载更多

Quartz的Misfire处理规则 错过任务执行时间的处理机制

调度(scheduleJob)或恢复调度(resumeTrigger,resumeJob)后不同的misfire对应的处理规则 CronTrigger withMisfireHandlingInstructionDoNothing ——不触发立即执行 ——等待下次Cron触发频率...

独钓渔
56分钟前
4
0
如何在Django视图中合并两个或多个查询集? - How to combine two or more querysets in a Django view?

问题: I am trying to build the search for a Django site I am building, and in that search, I am searching in 3 different models. 我正在尝试搜索要构建的Django网站,在该搜索中,我......

javail
今天
5
0
PHP解析/语法错误; 以及如何解决它们? - PHP parse/syntax errors; and how to solve them?

问题: Everyone runs into syntax errors. 每个人都遇到语法错误。 Even experienced programmers make typos. 即使是经验丰富的程序员也会打错字。 For newcomers, it's just part of the......

fyin1314
今天
20
0
OSChina 周三乱弹 —— 公主是大王的,命是自己的。小怪也要养家糊口啊!

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @巴拉迪维 :郭燕的单曲《下半生》 最近听一些轻快的歌 #今日歌曲推荐# 《下半生》 - 郭燕 手机党少年们想听歌,请使劲儿戳(这里) @锦年 :...

小小编辑
今天
38
1
263. Ugly Number

题目: 263. Ugly Number 题目地址:https://leetcode.com/problems/ugly-number/ Write a program to check whether a given number is an ugly number. Ugly numbers are positive numbers......

JiaMing
今天
68
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部