Django project structure helps organize your web app files clearly. It makes your code easy to find and manage.
Django project structure walkthrough
myproject/ # Root folder of your project manage.py # Command-line tool to run tasks myproject/ # Main project folder __init__.py # Marks this as a Python package settings.py # Configuration settings urls.py # URL routing for the project asgi.py # ASGI server entry point wsgi.py # WSGI server entry point app1/ # A Django app folder migrations/ # Database migrations __init__.py admin.py # Admin site settings apps.py # App configuration models.py # Data models tests.py # Tests for app views.py # Views (logic for pages) templates/ # HTML templates static/ # Static files like CSS, JS, images
The manage.py file helps you run commands like starting the server or making migrations.
Each app is a smaller part of your project that does one job, like handling users or blog posts.
blog. Templates for the blog are inside the app folder.myproject/
manage.py
myproject/
settings.py
urls.py
blog/
models.py
views.py
templates/
blog/
post_list.htmlstatic folder at the project root.myproject/
manage.py
myproject/
settings.py
urls.py
users/
models.py
views.py
static/
css/
style.cssThis is a simple Django project with one app called polls. It has folders for templates and static files outside the app folder for shared use.
myproject/
manage.py
myproject/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
templates/
base.html
static/
css/
main.cssAlways keep your apps focused on one task to keep your project organized.
Use the templates folder for HTML files and static for CSS, JavaScript, and images.
Remember to add your apps to INSTALLED_APPS in settings.py to activate them.
Django projects have a clear folder structure to organize code and files.
manage.py helps run commands for your project.
Apps are smaller parts of the project, each with its own files.
Practice
Solution
Step 1: Identify the command runner file
Themanage.pyfile is designed to run commands like starting the server or making migrations.Step 2: Understand other files' roles
settings.pyholds configuration,urls.pyroutes URLs, andwsgi.pyis for deployment interface.Final Answer:
manage.py -> Option AQuick Check:
Command runner = manage.py [OK]
- Confusing settings.py as command runner
- Thinking urls.py runs commands
- Assuming wsgi.py runs server commands
Solution
Step 1: Identify where settings.py and urls.py live
These files are inside the main project folder, which shares the project name.Step 2: Differentiate folders
App folders contain app-specific code, templates hold HTML files, static holds CSS/JS/images.Final Answer:
The project folder -> Option CQuick Check:
Settings and URLs = project folder [OK]
- Thinking settings.py is inside an app folder
- Confusing templates folder with project folder
- Assuming static folder holds config files
myproject/
manage.py
myproject/
settings.py
urls.py
blog/
models.py
views.py
urls.pyWhich file would you edit to add a new URL route for the blog app?
Solution
Step 1: Understand URL routing in Django
The main projecturls.pyincludes app URLs, but app-specific routes go in the app'surls.py.Step 2: Locate where to add blog routes
To add blog-specific URLs, editblog/urls.pywhere blog views are connected to paths.Final Answer:
blog/urls.py -> Option BQuick Check:
App URLs go in app's urls.py [OK]
- Adding app URLs directly in project urls.py
- Editing settings.py for URL routes
- Trying to add routes in manage.py
ModuleNotFoundError: No module named 'blog'. Which of these is the most likely cause?Solution
Step 1: Understand the error meaning
The error means Python cannot find the blog app module when loading the project.Step 2: Check common causes
Not adding the app name toINSTALLED_APPSinsettings.pycauses this error because Django doesn't recognize the app.Final Answer:
Forgot to add blog to INSTALLED_APPS -> Option DQuick Check:
Missing app in INSTALLED_APPS = ModuleNotFoundError [OK]
- Assuming missing urls.py causes ModuleNotFoundError
- Running manage.py from wrong folder usually gives different error
- Forgetting imports in views.py causes different errors
shop inside your project. Which sequence of actions correctly follows Django project structure best practices?Solution
Step 1: Create the app properly
Usepython manage.py startapp shopto create the app folder with correct files.Step 2: Register the app in settings
AddshoptoINSTALLED_APPSinsettings.pyso Django knows about it.Final Answer:
Run startapp then add to INSTALLED_APPS -> Option AQuick Check:
Start app then register in settings [OK]
- Manually creating app folder misses essential files
- Adding app to INSTALLED_APPS before creating it
- Using startproject instead of startapp for apps
Ready to prove it?
Pass the test and this pattern moves unknown
