How to get non_field_errors on template when using FormView and ModelForm
First of all, We will have to make sure if its a non_field_error or a field error.
Where have you raise ValidationError in the ModelForm you have defined ?

If its raised in def clean() of the Form, then it would be present in non_field_errors and can be accessed via form.non_field_errors in template
If it is raised in def clean_<field_name>() then, it would be a field error and can be accessed via form.errors or form.<field_name>.error  in template

Please decide for yourself where do you want to raise it.
Note: ModelForm can work with with FormView. But Ideally, there are CreateView and UpdateView for that
I'm using FormView with ModelForm to process a registration form. In case of duplication of email i'm raising ValidationError. But this error message is not available on registration template as non_field_errors.
When i tried to find what is the form.errors in form_invalid method in RegistrationView, its showing the expected the errors, but somehow its not getting passed to template.