Django: "projects" vs "apps"
Once you graduate from using startproject
and startapp
, there's nothing to stop you from combining a "project" and "app" in the same Python package. A project is really nothing more than a settings
module, and an app is really nothing more than a models
module—everything else is optional.
For small sites, it's entirely reasonable to have something like:
site/
models.py
settings.py
tests.py
urls.py
views.py
Try to answer question: "What does my application do?". If you cannot answer in a single sentence, then maybe you can split it into several apps with cleaner logic.
I read this thought somewhere soon after I've started to work with django and I find that I ask this question of myself quite often and it helps me.
Your apps don't have to be reusable, they can depend on each other, but they should do one thing.