routers.go
package routers
import (
"github.com/astaxie/beego"
"quickstart/controllers"
)
func init() {
beego.Router("/", &controllers.MainController{})
//beego.Router("/orm", &controllers.MainController{},"*:TestOrm")
//beego.Router("/ba", &controllers.StuController{},"*:TestBase")
beego.Router("/tp", &controllers.StuController{},"*:BaseTempl")
}
Stu.go文件源码:
package controllers
import (
"fmt"
"github.com/astaxie/beego"
_ "github.com/go-sql-driver/mysql"
_ "sync"
)
type StuController struct {
beego.Controller
}
type User struct {
Id int `form:"-"`
Name interface{} `form:"username"` //对应表单中的username值,字段名首字母也必须大写,否则无法解析该参数的值
Age int `form:"age"` //对应表单中的age值,如果不写将无法解析该参数的值
Email string `form:"email"` //对应表单中的email值,如果不写将无法解析该参数的值
Like []string `form:"like"` //对应表单中的like值,如果不写将无法解析该参数的值
}
type Res struct {
Code int
Into string
Data [] User
}
func (c *StuController) BaseTempl() {
var s1 = []string{"你好", "世界"}
user1 := User{
1,
"李虎",
25,
"lihu@qq.com",
s1,
}
var s2 = []string{"你好", "世界"}
user2 := User{
1,
"李虎",
25,
"lihu@qq.com",
s2,
}
res := Res{
1,"success",[]User{user1,user2},
}
fmt.Println(res)
c.Data["data"] = &res
c.TplName = "temp.tpl"
}
temp.tpl源码:
<!DOCTYPE html>
<html>
<head>
<title>Beego</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div>
模板样式
</div>
<div> if ... else ... end {{ if gt .data.Code 0 }} 123 {{else }} 444{{end}}</div>
<div> range ... end {{range .data.Data}}{{.}}{{else}}
没有东西哦{{/* 当 .data.Data 为空 或者 长度为 0 时会执行这里 */}}{{end}} </div>
<div> {{range $index, $elem := .data.Data}}
{{$index}} - {{$elem.Name}}
{{end}} </div>
//
<div> with ... end {{with .data}}{{.Code}}{{.Into}}{{end}} </div>
<div>{{with $value := "My name is %s"}}
{{printf . "slene"}}
{{end}}</div>
//
<div>define
{{define "loop"}}
<li>11111111111111111111</li>
{{end}}
{{template "loop" .}}
</div>
//
<div>允许多行文本注释,不允许嵌套{{/* comment content
support new line */}}</div>
</body>
</html>