> Is this only a problem with Java frameworks?
No, but Java is notable for this problem. I think the root issue is that it is of course possible to write flexible software in Java, but in order to do so you must write all the dynamic bits in this static language, which ends up meaning that everything you write has to conform to an external statically–implemented-dynamism framework, and if you're going to have a framework then you might as well add to it, and … you end up with a standard Java app.
I haven't programmed in some of the cooler/reputed-to-be-better static languages like Haskell or the ML family (not beyond a few simple exercises, anyway), so I can't say to what extent they would suffer from this same problem if they enjoyed the same popularity.
I think that from the perspective of two decades on, Java turned out to have been a failure, not with respect to popularity but to quality. It turns out that it enabled mediocre software architects to spend great quantities of corporate money coming up with mediocre designs to be implemented by mediocre programmers, resulting in mediocre software and mediocre return on investment. That doesn't mean that it's impossible to write high-quality Java, just that that's not the norm: the entire Java ecosystem militates against quality, because quality is risk, and Java is not about risk: Java and Java-using organisations prefer predictable mediocrity to excellence. That's not even necessarily bad — sometimes predictable mediocrity is preferable to risk — but it's certainly not inspiring.
I too used to really like Django; I spent about six years using it for one project and another. Were I going to do Python web development again, I'd probably use Flask or Bottle, but Django definitely taught me a lot.
But I'd prefer not to do Python web development in the future.