I know that I can execute template with:
t.ParseFiles(name)
t.Execute(w, page)
And respond 500 with a message like this:
http.Error(w, err.Error(), http.StatusInternalServerError)
But how should I return 500 with a template that contains that message?
Call ResponseWriter.WriteHeader
before you execute your template:
WriteHeader sends an HTTP response header with status code.
If WriteHeader is not called explicitly, the first call to Write will trigger an implicit WriteHeader(http.StatusOK).
Thus explicit calls to WriteHeader are mainly used to send error codes.
t.ParseFiles(name)
w.WriteHeader(http.StatusInternalServerError)
t.Execute(w, page)
If you look at the source code of http.Error
, you can see it's doing the same thing.