Python Tutorial
Django Create Project
A project is the container for settings, URLs, and apps. Create one named mysite and start the development server.
startproject
From django-tutorial with the venv active:
django-admin startproject mysite .The trailing . puts files in the current folder instead of creating a nested mysite/mysite extra level. You should now see:
django-tutorial/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.pyWhat Each File Does
| File | Role |
|---|---|
manage.py | Run commands: server, migrations, shell, tests |
settings.py | Database, installed apps, templates, static files |
urls.py | Root URL routes |
wsgi.py / asgi.py | Entry points for production servers |
Run the Development Server
python manage.py runserverOpen http://127.0.0.1:8000/. You should see the Django rocket / success page. Stop the server with Ctrl+C.
The first runserver also creates db.sqlite3 after you migrate. We will migrate when the app has a model.
settings.py to Notice
DEBUG = True— show errors while you learn. Turn this off in production.ALLOWED_HOSTS— empty in development is fine; production needs your domain.DATABASES— SQLite by default. No extra install needed.
📘 Real-World Deep Dive
Knowing <strong>Django Create Project (Django)</strong> well is what turns Django from a curiosity into a daily tool — you'll reach for it in nearly every real project.
Real-Life Scenario
An end-to-end usage of Django Create Project that you'd actually see in a data pipeline or analytics notebook.
Real-Life Example
# Bootstrap a new project:
django-admin startproject mysite .
cd mysite && python manage.py startapp core
python manage.py migrate
python manage.py runserverExpected Output
(no output)Common mistakes
- Forgetting to call
.save()on a model instance after mutation silently persists nothing. - Reading every row with
Model.objects.all()on a 1 M-row table OOMs the worker — use.iterator()for streaming. - Queries inside loops produce N+1 problems — pull related rows with
select_related/prefetch_related. - Treating Django Create Project as a black box without reading the docs — the API has subtle defaults that bite when you scale.
🚀 Performance & Best Practices
- Add database indexes (
db_index=TrueorMeta.indexes) on columns used infilter. - Use
cache_pageon read-heavy views and setCONN_MAX_AGEto keep DB connections warm. - Generate migrations with
python manage.py makemigrations --dry-run --verbosity 3and review before committing. - When working with Django, prefer vectorised / batched operations over Python loops.
🧪 Try It Yourself
- Reproduce the snippet on a representative slice of your own data.
- Profile the snippet with
cProfileortimeitand find the single biggest improvement. - Generalise the snippet into a small, reusable function you can drop into future projects.