Go 为元素创建个性化页面

Go 为元素创建个性化页面,go,Go,我不确定标题是否正确,因此非常欢迎您建议另一个标题 基本上,我有一个小的web服务,它是一个课程目录。目录页面显示正确,但我无法使课程页面正常工作 以下是我的课程页面处理程序: func courseHandler(w http.ResponseWriter, r *http.Request) { err := templates.ExecuteTemplate(w, "course", courses) if err != nil { fmt.Fprintf(w

我不确定标题是否正确,因此非常欢迎您建议另一个标题

基本上,我有一个小的web服务,它是一个课程目录。目录页面显示正确,但我无法使课程页面正常工作

以下是我的课程页面处理程序:

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 }}

当我尝试继续进入课程页面时,出现“404未找到”错误。

您的问题不太可能与模板有关。很可能您的处理程序注册的路径与您尝试的路径不同,或者根本没有注册。也就是说,您可能看到了错误的url,或者课程url没有处理程序。@bserdar我注册了我的处理程序,路径似乎是正确的,我还提供了代码您注册了帖子/课程,但是使用href,它将执行一个GET/course@bserdar非常感谢。您的问题不太可能与模板有关。很可能您的处理程序注册的路径与您尝试的路径不同,或者根本没有注册。也就是说,您可能看到了错误的url,或者课程url没有处理程序。@bserdar我注册了我的处理程序,路径似乎是正确的,我还提供了代码您注册了帖子/课程,但是使用href,它将执行一个GET/course@bserdar非常感谢。
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