beego基础--数据渲染

Beego 是一个MVC框架:

Model (模型) 主要用于处理应用程序的业务逻辑,以及和数据库打交道

View (视图) 是应用程序中数据显示的部分

Controller (控制器) 控制器作用于模型和视图上,它可以把我们在 Model 模型上面获取的数据显示到 View 视图上面,也可以把 View 传递的数据流向模型对象。

上面讲的mvc可能还很抽象,具体了解还是百度一下.
目前来看,学习beego需要了解go,html,mvc.

进入正题

本节掌握的知识点
1.如何从 Controller 映射数据到 View
2.常用的几种数据对象 映射方式

bee new blog 创建工程

目录结构

beego模板默认路径(视图):工程目录/views/
     可以在controllers/*.go中设置模板文件名,和声明对象,将对象的值映射到模板view/*.html文件上


目录结构图中的index.tpl这个可以不用管,
新建一个自己的html文件就好了,

在controller/default.go中创建数据对象,将对象赋值给控制器
c.Data["渲染时调用的名字"]=数据对象

在views/index.html中通过 {{.渲染时调用的名字}} 使用对象,具体使用看代码

几种常用的数据类型的映射

1.结构体渲染
2.数组、切片渲染
3.结构体数组
4.map数组
5.map+结构体
6.显示字符串
controller/default.go

package controllers

import (
	"github.com/astaxie/beego"
)

type User struct {
	Name string
	Year int
}

type MainController struct {
	beego.Controller
}

func (c *MainController) Get() {

    	c.TplName = "index.html" //设置映射的模板文件
     

	//1.结构体渲染
	user := User{
		//注意!结构体中变量名首字母大写才外可见
		Name: "吉良吉影",
		Year: 33,
	}

	c.Data["user"] = user

	//2.数组、切片渲染
	arr := [5]int{1, 2, 3, 4, 5}
	slice := []int{1, 2, 3, 4, 5, 6}

	c.Data["arr"] = arr
	c.Data["slice"] = slice

	//3.结构体数组
	user_arr := [2]User{
		{Name: "承太郎", Year: 28},
		{Name: "东方仗助", Year: 16},
	}

	c.Data["user_arr"] = user_arr

	//4.map数组
	map_data := map[string]interface{}{
		"name": "乔瑟夫 乔斯达",
		"year": 68,
	}

	c.Data["map_data"] = map_data

	//5.map+结构体
	map_struct_data := map[string]User{
		"user1": {"西撒", 20},
		"user2": {"乔瑟夫 乔斯达", 18},
	}
	c.Data["map_struct_data"] = map_struct_data

	//6.显示字符串
	//c.Ctx.WriteString("hello JOJO")
	//这个函数会使整个页面只显示要输出的字符串


}

views/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>beego基础/</title>
</head>
<body> 
    1.结构体渲染<br><br>
    {{.user.Name}},
    {{.user.Year}}  
     
    <br>-------------<br>

    2.数组、切片渲染<br><br>
    {{range $key, $val := .arr}}
    {{$key}}:{{$val}}<br>
    {{end}} <br>
     
  
    {{range $key, $val := .slice}}
    {{$key}}:{{$val}}<br>
    {{end}} <br> 
    
    <!-- 
    {{range .arr}}
    {{.}}
    {{end}}
    -->
    <br>-------------<br>
    3.结构体数组<br><br>
    {{range $key, $val := .user_arr}}
    {{$key}}:{{$val.Name}}-{{$val.Year}}<br>
    {{end}} <br>

    <!-- 
    {{range .user_arr}}
    {{.Name}}:{{.Year}}<br>
    {{end}}<br>
    -->
    <br>-------------<br>

    4.map数组<br><br>
    {{.map_data.name}}
    {{.map_data.year}}
    <br>
    <br>-------------<br>

    5.map+结构体<br><br>
    {{range $key,$val := .map_struct_data}}
    {{$key}}:{{$val.Name}}-{{$val.Year}}<br>
    {{end}}<br> 
    
    
     
</body>
</html>
posted @   blackTree  阅读(390)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示