One way to think of it is that the client is sending requests, rather than forms, to the Django backend. If you want your requests to have data in them then you can either: wrap a bunch of fields in a form element and post that form; or you can do a post request from any element (eg a button) and you use hx-include to specify which fields you want in the post request. The form way is like a shorthand for that.
Does that help?