Hello there!
You’re using a class-based-view also called CBV, CBVs give you methods and attributes that you can override to write less code, but sometimes if you find yourself overriding a lot of methods to get the behavior you want it would be better to not use a CBV (it’s not the case here).
No, you can’t. Because form_valid is being called by the FormView.
This is being bassed by FormView.
Also can’t. The method get (and also others that have the http method name) have a special meaning, they handle a request for that http method.
If you wish, you can dive into the source code to better understand what’s going on.
Here’s the source code for the FormView.
If you pay attention, FormView inherits from 2 classes, but let’s concentrate on: BaseFormView that’s defined just above the FormView class. And BaseFormView also inherits from other 2 classes, i believe the most important one to note is the ProcessFormView there you can figure it out how that the arguments are passed to the function, and why the form_valid method needs to be named like that.
Hope this helps you find the answers you’re looking for.
Also a great resource about CBVs is this: https://ccbv.co.uk/
Well, this question is out of the scope of the Django scenario.
But you’ll like to know that this information is available on the first paragraphs of the python’s documentation about the super built-in function