I have been using Django for about 6 months now. Previously, I had been working on PHP and Rails apps. I have been looking hard for some good best practices for Django. There are some things I really like about Django. I like it's readability and I like that new web developers can get up to speed rather quickly. There is one area that I really wish were better though. It is unfathomable to me that the norm (and best practice too apparently) is to cram pounds of code into single files (views.py, models.py, etc). Now sure, it's Python. You can break it up. But the documentation and also what you see in Django projects perpetuates this insanity. To break up your models, you must add additional glue code to each and every model (app_label) and if your app is large you <i>will</i> run into circular import issues. This is just not practical for medium to large projects. The best practice is to break up your project into applications. Yes, that does help some but you still are going to want to break up an app's model, view, etc into multiple files. Isn't this common sense? This and other areas of Django often makes me wonder: Why does Django make it easy to do the wrong things and hard to do the right thing?