成功登录后,我想重定向到主页,并且正在使用go HTML-template为主页生成HTML。登录时,URL确实更改为/home
,并且HTML页面也加载。但它不会加载从服务器端传递的页面变量。
func LoginHandler(w http.ResponseWriter, r *http.Request) {
....
PageVars := Login{
Username: username,
}
http.Redirect(w,r,"/home",302)
t, err := template.ParseFiles("static/home.html")
if err != nil {
log.Printf("template parsing error: ", err)
}
err = t.Execute(w, PageVars)
if err != nil {
log.Printf("template executing error: ", err)
}
}
我的html页面如下:
<!DOCTYPE html>
<html>
<body>
<div id="mainContainer" class="alignCenter">
<header class = "nav">
<div class = "nav-links">
<span class="headerTitle" id="headerTitle">{{.Username}}</span>
<form action="http://localhost:8080/api/logout" method="POST">
<span id="logout" onclick="document.forms[0].submit()">Logout</span>
</form>
</div>
</header>
</div>
</body>
登录后,页面在页眉中显示{{.Username}}
,而不显示服务器端的登录用户名。
如果我在模板执行后放置http.Redirect(w,r,"/home",302)
,则会加载用户名,但url会指向api调用,例如http://localhost:8080/api/login
而不是http://localhost:8080/home
。我从两天以来一直在编码go。我在这里做错了什么,请帮忙。