gpt4 book ai didi

html - 如何在golang中使用html

转载 作者:IT王子 更新时间:2023-10-29 02:30:38 25 4
gpt4 key购买 nike

我正在学习 golang 并尝试制作一个简单的网站。这是我的文件夹结构。

- ui
|
- login.html
- cmd
|
- main.go

我的main.go

package main

import (
"html/template"
"net/http"
)

var tmpl *template.Template

func init() {
tmpl = template.Must(template.ParseFiles("../ui/login.html"))
}

func main() {
http.HandleFunc("/", foo)
http.ListenAndServe(":8080", nil)
}

func foo(reswt http.ResponseWriter, req *http.Request) {
tmpl.ExecuteTemplate(reswt, "../ui/login.html", nil)

}

login.html

<html>
<form method="POST">
<label for="uname">User Name</label>
<input type="text" id="uname" name="username">
<br>

<input type="submit">

</form>
</html>

当我执行 main.go 时,我没有收到错误。但是 localhost:8080 上什么也没有。

如果我将 main.gologin.html 保存在同一个文件夹中,这就可以了。

为什么这个文件夹结构不起作用?我试过 [this SO thread],但这并没有解决我的问题 1

css 后添加的以下部分不起作用。

<style>
input[type=submit]:active {
background: #cde5ef;
border-color: #9eb9c2 #b3c0c8 #b4ccce;
-webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.2);
box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.2);
}

</style>


<div class="login">
<h1>Login to Web App</h1>
<form method="post" action="">
<p><input type="text" name="login" value="" placeholder="Username or Email"></p>
<p><input type="password" name="password" value="" placeholder="Password"></p>
<p class="remember_me">
<label>
<input type="checkbox" name="remember_me" id="remember_me">
Remember me on this computer
</label>
</p>
<p class="submit"><input type="submit" name="commit" value="Login"></p>
</form>
</div>

<div class="login-help">
<p>Forgot your password? <a href="#">Click here to reset it</a>.</p>
</div>

当我转到 localhost:8080

我在浏览器中得到以下输出。

<style> input[type=submit]:active {   background: #cde5ef;   border-color: #9eb9c2 #b3c0c8 #b4ccce;   -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.2);   box-shadow: inset 0 0 3px rgba(0, 0, 0,
0.2); } } </style>


<div class="login"> <h1>Login to Web App</h1> <form method="post" action="">
<p><input type="text" name="login" value="" placeholder="Username or Email"></p>
<p><input type="password" name="password" value="" placeholder="Password"></p>
<p class="remember_me">
<label>
<input type="checkbox" name="remember_me" id="remember_me">
Remember me on this computer
</label>
</p>
<p class="submit"><input type="submit" name="commit" value="Login"></p> </form> </div>

最佳答案

ParseFiles 将文件列表的名称存储为模板名称。这意味着,在您的情况下, login.html 应该在执行中使用,而 ../ui/login.html 不可用。


这会起作用,因为 login.html 已经被 init() 命名。

func init() {
tmpl = template.Must(template.ParseFiles("../ui/login.html"))
}

func foo(reswt http.ResponseWriter, req *http.Request) {
tmpl.ExecuteTemplate(reswt, "login.html", nil)
}

关于html - 如何在golang中使用html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57192773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com