// Render renders a template using the context's writer func (t *Template) Render(ctx context.IContext, name string, binding interface{}, layout ...string) (err error) { if t == nil { // No engine was given but .Render was called ctx.HTML(403, "<b> Iris </b> <br/> Templates are disabled via config.NoEngine, check your iris' configuration please.") return fmt.Errorf("[IRIS TEMPLATES] Templates are disabled via config.NoEngine, check your iris' configuration please.\n") } // build templates again on each render if IsDevelopment. if t.IsDevelopment { if err = t.Engine.BuildTemplates(); err != nil { return } } _layout := t.getLayout(ctx, layout) ctx.GetRequestCtx().Response.Header.Set("Content-Type", t.ContentType) var out io.Writer if t.Gzip { ctx.GetRequestCtx().Response.Header.Add("Content-Encoding", "gzip") gzipWriter := t.gzipWriterPool.Get().(*gzip.Writer) gzipWriter.Reset(ctx.GetRequestCtx().Response.BodyWriter()) defer gzipWriter.Close() defer t.gzipWriterPool.Put(gzipWriter) out = gzipWriter } else { out = ctx.GetRequestCtx().Response.BodyWriter() } err = t.Engine.ExecuteWriter(out, name, binding, _layout) return }