Создайте персонализированную страницу для элемента - PullRequest
1 голос
/ 04 октября 2019

Я не уверен, что заголовок правильный, поэтому вы можете предложить еще один.

По сути, у меня есть небольшой веб-сервис, который представляет собой каталог курсов. Страница каталога отображается правильно, но я не могу заставить страницу курса работать правильно.

Вот мой обработчик для страницы курса:

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».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...