Пустая html страница в браузере и при запуске с golang
проблема в следующем: Написал небольшое веб-приложение на golang, но когда запускаю на локальном сервере в браузере отображается пустая страница (при проверке инспектором html теги не отображаются совсем), будто golang передает на сервер пустой html файл. Подскажите пожалуйста, в чем дело.
Файл main.go:
package main
import (
"fmt"
"net/http"
"html/template"
)
//3.Функция, будет срабатывать каждый раз, когда будем переходить на главную страницу
func index(w http.ResponseWriter, r *http.Request) {
t, err := template.ParseFiles("templates/index.html", "templates/header.html", "templates/footer.html")
if err != nil {
fmt.Fprintf(w, err.Error())
}
t.ExecuteTemplate(w, "index", nil)
}
//2.Функция направления на главную страницу
func handleFunc() {
http.HandleFunc("/", index)
http.ListenAndServe(":8000", nil)
}
//1.Главная функция
func main() {
handleFunc()
}
Файл index.html
{{ define "index" }}
{{ template "header" . }}
<main role="main" class="inner cover">
<h1 class="cover-heading">Cover your page.</h1>
<p class="lead">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
<p class="lead">
<a href="#" class="btn btn-lg btn-secondary fw-bold border-white bg-white">Узнать больше</a>
</p>
</main>
{{ template "footer" . }}
{{ end }}
Файл header.html
{{ define "header" }}
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://getbootstrap.com/docs/5.0/examples/cover/cover.css">
</head>
<body class="d-flex h-100 text-center text-white bg-dark">
<div class="cover-container d-flex w-100 h-100 p-3 mx-auto flex-column">
<header class="mb-auto">
<div>
<h3 class="float-md-start mb-0">Cover</h3>
<nav class="nav nav-masthead justify-content-center float-md-end">
<a class="nav-link active" aria-current="page" href="#">Home</a>
<a class="nav-link" href="#">Features</a>
<a class="nav-link" href="#">Contact</a>
</nav>
</div>
</header>
{{ end }}
Файл footer.html
{{ define "footer "}}
<footer class="mt-auto text-white-50">
<p>Cover template for <a href="https://getbootstrap.com/" class="text-white">Bootstrap</a>, by <a href="https://twitter.com/mdo" class="text-white">@mdo</a>.</p>
</footer>
</div>
</body>
</html>
{{ end }}
При этом ни в терминале ни в браузере ошибок никаких нету.
Ответы (2 шт):
Автор решения: Сергей Макаев
→ Ссылка
Честно, я искал ошибку наверное часа 3, в итоге: файл footer.html, define footer указан с ПРОБЕЛОМ!
Автор решения: Senior Pomidor
→ Ссылка
тут несколько проблем.
- если бы проверяли на ошибки, то можно было понять в чем ошибка
err = t.ExecuteTemplate(w, "index", nil)
if err != nil {
fmt.Fprintf(w, err.Error())
}
- в файле
header.htmlне закрываетсяdiv - в
footer.htmlтемплейт называется с лишним пробелом{{ define "footer "}}, но ссылаемся без пробела