Comment on page
07-Profile-Page-And-Avatar
本章将致力于为应用添加个人主页。个人主页用来展示用户的相关信息,其个人信息由本人录入。 我将为你展示如何动态地生成每个用户的主页,并提供一个编辑页面给他们来更新个人信息。
作为创建个人主页的第一步,让我们为其URL /user/ 新建一个对应的视图函数。
我们还是老套路 一个
vm
加一个 page
另外再加一个 controller
(model
暂时不涉及新的model)vm/profile.go
package vm
import "github.com/bonfy/go-mega-code/model"
// ProfileViewModel struct
type ProfileViewModel struct {
BaseViewModel
Posts []model.Post
ProfileUser model.User
}
// ProfileViewModelOp struct
type ProfileViewModelOp struct{}
// GetVM func
func (ProfileViewModelOp) GetVM(sUser, pUser string) (ProfileViewModel, error) {
v := ProfileViewModel{}
v.SetTitle("Profile")
u1, err := model.GetUserByUsername(pUser)
if err != nil {
return v, err
}
posts, _ := model.GetPostsByUserID(u1.ID)
v.ProfileUser = *u1
v.Posts = *posts
v.SetCurrentUser(sUser)
return v, nil
}
_base.html
在登陆情况下 加入 Profile 的链接templates/_base.html
...
<div>
Blog:
<a href="/">Home</a>
{{if .CurrentUser}}
<a href="/user/{{.CurrentUser}}">Profile</a>
<a href="/logout">Logout</a>
{{else}}
<a href="/login">Login</a>
{{end}}
</div>
...
templates/content/profile.html
{{define "content"}}
<h1>User: {{.ProfileUser.Username}}</h1>
<hr/>