I'm curious why it took a few hours to swap out the base user model? Unless I'm missing something, it's fairly simple to extend the AbstractUser class with a custom user model, and then assign `Settings.AUTH_USER_MODEL = 'CustomUser`.
That said, everything is easy once you know how to do it. If this was the first time you've done this or there was research involved, it definitely makes sense that it would take longer!
I'm mostly asking bc I'm curious if you came upon a level of complexity that I simply haven't encountered.
We made some heavy modifications to the user model to allow for authentication with a few different types of identifiers, including composite keys. Django expects you to set a single USERNAME_FIELD but we had to support more than one and that required changes to the auth system. By default it also didn't work with UUIDs as usernames so that took a bit of time to fix.
I don't see how your points were proven. The 'defaults' you're talking about take a grand total of ~10 minutes tops to change, and actually can come by 'default' if you use one of the available Django templates that are popular.
Your complaints are valid from a subjective perspective, but if your bar for something being "a pain" is really "took longer than 10 minutes", I can't imagine how you function as a software engineer as even in Rails there are many things that will take longer to do.
How about "I was struggling for days with Django which lead to a minor burn-out and as a result I lost several weeks of my time"?
That's when I decided to pick up Rails tutorial and it was probably one of the best tech-related decisions I made in my businesses.
I shouldn't use cookiecutter templates, plugins, scripts to make working with the software tolerable. It should just work and get out of my way. Well, at least when doing a greenfield development.
It took me about 5 seconds of googling to find a Django tutorial that describes how to change the user auth model and make the change in less than 10 minutes.
In comparison, I too could waste my entire weekend tinkering with something in Rails, but I instead choose to do things the right way and look up a tutorial to explain how to do it easily, which it sounds like you did with Rails. Why you didn't do this with Django instead of wasting weeks, I dunno.
Again, if you prefer rails for subjective reasons that's fine. But blaming Django for being "too much of a pain" just because it sounds like you chose to do things the difficult way is pretty unfair.
If you were struggling for days with Django, I really wonder how you'd handle writing line of business logic for paying customers, which is orders of magnitude more difficult than picking one framework among several that have feature parity. This could be a place for you to improve as an engineer rather than being proof of a framework being bad or "burning" you.
The defaults in Django work fine for most people. I've used rails before and it's a great framework but python has a much better ecosystem, especially if you're doing anything machine learning ralated.
2. Nothing is stopping you from using multiple files for config. We use a config module with a separate file for DB, caching, DRF and etc.
3. Testing with pytest is pretty nice too.
Django rest framework is what makes Django great these days.