Я не уверен, что заголовок правильный, поэтому вы можете предложить еще один.
По сути, у меня есть небольшой веб-сервис, который представляет собой каталог курсов. Страница каталога отображается правильно, но я не могу заставить страницу курса работать правильно.
Вот мой обработчик для страницы курса:
func courseHandler(w http.ResponseWriter, r *http.Request) {
err := templates.ExecuteTemplate(w, "course", courses)
if err != nil {
fmt.Fprintf(w, err.Error(), http.StatusInternalServerError)
return
}
}
Вот как я анализирую шаблоны и сохраняю курсы:
var courses map[string]*models.Course
var templates = template.Must(template.ParseGlob("templates/*.html"))
У меня также есть шаблоны для каталога истраницы курса, где я помещаю значения в формате {{...}}.
Вот пример элемента курса на HTML-странице каталога, который является ссылкой на страницу курса.
{{ range $key, $value := . }}
<div class="row mb-2">
<div class="col-md-8 mx-auto">
<div
class="row no-gutters border rounded overflow-hidden flex-md-row mb-4 shadow-sm h-md-250 position-relative">
<div class="col p-4 d-flex flex-column position-static">
<strong class="d-inline-block mb-2 text-success">{{ $value.Category }}</strong>
<h3 class="mb-0">{{ $value.Title }}</h3>
<div class="mb-1 text-muted">{{ $value.StartDate }}</div>
<p class="card-text mb-auto">{{ $value.Description }}</p>
<a href="/course?id={{$key}}" class="stretched-link">Узнать больше</a>
</div>
<img class="float-right" width="200" height="250" src="{{$value.Image}}">
</div>
</div>
</div>
{{ end }}
Я также регистрирую свои обработчики, используя структуру martini:
staticOptions := martini.StaticOptions{Prefix: "templates"}
m.Use(martini.Static("templates", staticOptions))
m.Get("/", indexHandler)
m.Get("/add", addHandler)
m.Get("/courses", coursesHandler)
m.Get("/edit", editHandler)
m.Get("/delete", deleteHandler)
m.Post("/SaveCourse", saveCourseHandler)
m.Post("/course", courseHandler
Когда я пытаюсь перейти на страницу курса, появляется ошибка «404 Not Found».