如何在 Go 中执行状态码为 500 的模板?

Apo*_*his 2 web-applications go

我知道我可以使用以下命令执行模板:

t.ParseFiles(name)
t.Execute(w, page)
Run Code Online (Sandbox Code Playgroud)

并用如下消息响应 500:

http.Error(w, err.Error(), http.StatusInternalServerError)
Run Code Online (Sandbox Code Playgroud)

但是我应该如何使用包含该消息的模板返回 500 呢?

小智 5

ResponseWriter.WriteHeader在执行模板之前调用:

WriteHeader 发送带有状态代码的 HTTP 响应标头。
如果未显式调用 WriteHeader,则第一次调用 Write 将触发隐式 WriteHeader(http.StatusOK)。
因此显式调用 WriteHeader 主要用于发送错误代码。

t.ParseFiles(name)
w.WriteHeader(http.StatusInternalServerError)
t.Execute(w, page)
Run Code Online (Sandbox Code Playgroud)

如果你查看 的源代码http.Error,你会发现它在做同样的事情。