Rendering

Rendering

go-form allows you to render a form using Go’s built-in template engine. Here is a simple example that displays a form:

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    myForm := form.NewForm(...)

    render := theme.NewRenderer(theme.Html5)
    tpl, _ := template.New("page").Funcs(render.FuncMap()).Parse(`
		<html>
			<head>
				<title>My form</title>
			</head>
			<body>
				{{ form .Form }}
			</body>
		</html>
	`)

    w.Header().Set("Content-Type", "text/html; charset=utf-8")

    tpl.Execute(w, map[string]any{
        "Form": myForm,
    })
}

Other helper functions are available to render specific parts of the form:

  • form_errors: displays the form’s global errors
  • form_row : renders the label, errors, and widget of a field
  • form_label: renders only the label of a field
  • form_widget: renders only the widget of a field
  • form_widget_errors: renders only the errors of a specific field