第十三单元(添加功能)
<h1>beego框架实现添加功能</h1>
<h1>一、定义路由</h1>
<pre><code class="language-go">beego.Router("/user/form", &controllers.UserController{}, "get:UserForm")
beego.Router("/user/create", &controllers.UserController{}, "Post:UserCreate")
</code></pre>
<h1>二、编写表单</h1>
<pre><code class="language-go"><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="main">
<form action="/user/create" method="post" enctype="multipart/form-data">
用户名 <input type="text" name="name">
手机号 <input type="text" name="mobile">
头像 <input type="file" name="avatar">
<button type="submit">提交</button>
</form>
</div>
</body>
</html></code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=20fc22db0d542ae12fba9644a6068153&file=file.png" alt="" /></p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=4d34128306b13855839ff1ac1114aa37&file=file.png" alt="" /></p>
<h1>三、控制器定义</h1>
<pre><code class="language-go">package controllers
import (
"beegoPro/models"
"fmt"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
)
type UserController struct {
beego.Controller
}
func (u *UserController) Get() {
}
//表单
func (this *UserController) UserForm() {
this.TplName = "user/form.html"
}
//添加
func (u *UserController) UserCreate() {
name := u.GetString("name")
mobile := u.GetString("mobile")
File, FileHeader, _ := u.GetFile("avatar")
//文件夹要存在
path := "static/img/" + FileHeader.Filename
err := u.SaveToFile("avatar", path)
if err != nil {
fmt.Println(err.Error())
}
defer File.Close()
/*
(1))form 表单中,新增属性 enctype=”multipart/form-data” ,获取请求参数 c.Input().Get(“id”)
(2.)beego提供了两个方法来处理文件上传:
GetFile(key string) (multipart.File, *multipart.FileHeader, error) //该方法主要用于用户读取表单中的文件名 the_file,然后返回相应的信息,用户根据这些变量来处理文件上传:过滤、保存文件等
SaveToFile(fromfile, tofile string) error //该方法是在 GetFile 的基础上实现了快速保存的功能,fromfile 是提交时候的 html 表单中的 name
*/
Orm := orm.NewOrm()
//结构体对象
user := models.User{}
//结构体赋值
user.Name = name
user.Mobile = mobile
user.Avatar = path
//插入
Orm.Insert(&user)
if err != nil {
beego.Info("插入失败", err)
return
}
//u.Ctx.WriteString("添加成功")
url := "http://127.0.0.1:8080/user/show"
u.Ctx.Redirect(302, url)
}</code></pre>