使用http.Redirect重定向到使用html模板生成的网页

时间:2019-06-04 03:07:42

标签: go

成功登录后,我想重定向到主页,并且正在使用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。我在这里做错了什么,请帮忙。

0 个答案:

没有答案