Sorry for this dumb question, but i was confused:
I read This
Intermezzo: Projects vs. Apps
You may be wondering why, back in Django 1.4, the startproject command was added alongside the pre-existing startapp command. The answer lies in the difference between Django "projects" and Django "apps". Briefly, a project is an entire web site or application. An "app" is a small, (hopefully) self-contained Django application that can be used in any Django project. If you're building a blogging application called "Super Blogger", then "Super Blogger" is your Django project. If "Super Blogger" supports reader polls, "polls" would be an Django app used by "Super Blogger". The idea is that your polls app should reusable in any Django project requiring polls, not just within "Super Blogger". A project is a collection of apps, along with project specific logic. An app can be used in multiple projects.
While your natural inclination might be to include a lot of "Super Blogger" specific code and information within your "polls" app, avoiding this has a number of benefits. Based on the principle of loose coupling, writing your apps as standalone entities prevents design decisions and bugs in your project directly affecting your app. It also means that, if you wanted to, you could pass of the development of any of your apps to another developer without them needing to access or make changes to your main project.
Like many things in software development, it takes a bit of effort up-front but pays huge dividends later.
Then, if the website contains: Upload, Login, Registration, Add post
do i then split them to projects if i follow the app philosophy (instead of using on file for each Controller/View)? isent another complication for the code?
Since Django created the __init__
files to make it easier to import the class
then what is the main idea to complicate it with other startapp
? in tutorials i find in the web, all of them make the startapp
once, even the most complete applications.