之前的一些经验
之前也跟过一些博主写过一些小游戏和是简单的后端页面,主要是Django框架,因为Django个人开发起来确实快。其中,Django有自带的数据库,在跑服务项目下的链接后加/admin 就可以进入后台数据库管理页面,还可以通过在项目里面创建的app项目中的models文佳下写自己服务需求的一些数据封装成结构体,然后在app中的admin.py 文件中注册这个需要的结构体然后输入两行数据库迁移指令就可以在Django自带的数据库中添加出自己需要的数据类型构造出来的表,并且也可以像mysql关联那样和用户一一对应,如果用户删除就把当前数据类型的表中的对应数据删除
在青训营学习过程中的体会
青训营的前后端真的分的很清,基本上平时写的小项目都是前后端一体的,青训营让完成的项目前后端分离的很开,给我带来新的体验。其中对应我之前的一些Django体验的就是在这个项目中推荐使用的gorm和数据库进行交互。gorm和Django中的用结构体构造自己所需要的数据模型是一样的,甚至更方便。它不需要注册,迁移什么的,只需要你在对应的包里面创建一个go文件用来存放那些使用的结构体,只需要用 db.AutoMigrate(&structname{}), 其中structname 是你用到的结构体的名字,如果你当前项目连接的数据库中没有你定义的结构体这种类型的表,它就会自动创建,有的话就会继续执行下面操作。
下面是一个我在写青训营项目时候的例子
- 这是定义的 video 类型结构体,由于返回的链接还要和user进行绑定,但是数据库只能存字段,所以我就额外创建了一个数据用来和 user 的id进行外键关联,方便绑定。(项目中关于返回值的json定义也让我学到了新东西)
type Video struct {
Id int64 `json:"id,omitempty"`
Author User `json:"author" gorm:"foreignKey:AuthorID"`
AuthorID int64
PlayUrl string `json:"play_url" json:"play_url,omitempty"`
CoverUrl string `json:"cover_url,omitempty"`
FavoriteCount int64 `json:"favorite_count,omitempty"`
CommentCount int64 `json:"comment_count,omitempty"`
IsFavorite bool `json:"is_favorite,omitempty"`
Title string `json:"title,omitempty"`
}
发布视频功能的部分相关内容
db.AutoMigrate(&User{})
db.AutoMigrate(&Video{})
new_video := Video{
AuthorID: user.Id,
PlayUrl: "http://localhost:8080/static/" + finalName,
CoverUrl: "https://cdn.pixabay.com/photo/2016/03/27/18/10/bear-1283347_1280.jpg",
}
- 这样就实现了video 和 user 的绑定