Skip to content

Latest commit

ย 

History

History
440 lines (285 loc) ยท 5.62 KB

File metadata and controls

440 lines (285 loc) ยท 5.62 KB

Django for Beginners


What is Django?

Django is a high-level Python web framework used to build:

  • Web applications

  • APIs

  • Admin panels

  • Scalable backend systems

Why Django (over Flask)?

Django Flask
Batteries included Micro framework
Built-in admin No admin
ORM included Optional
Slower to start Faster to prototype

๐Ÿ‘‰ Use Django when:

  • You want structure

  • Youโ€™re building real products

  • You donโ€™t want to reinvent basics


Prerequisites

  • Python 3.10+

  • pip

  • Virtual environment (recommended)

python --version
pip --version

Virtual Environment (DONโ€™T SKIP THIS)

Most beginners skip this โ†’ dependency hell later.

python -m venv venv

Activate:

Windows

venv\Scripts\activate

Mac/Linux

source venv/bin/activate

Install Django

pip install django

Verify:

django-admin --version

Create Django Project

django-admin startproject myproject
cd myproject

Structure:

myproject/
โ”‚โ”€โ”€ manage.py
โ”‚โ”€โ”€ myproject/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ settings.py
โ”‚   โ”œโ”€โ”€ urls.py
โ”‚   โ”œโ”€โ”€ asgi.py
โ”‚   โ””โ”€โ”€ wsgi.py

Key Files (Know this)

  • settings.py โ†’ configuration

  • urls.py โ†’ URL routing

  • manage.py โ†’ command-line utility


โ–ถ๏ธ Run Development Server

python manage.py runserver

Visit:

http://127.0.0.1:8000/

If this doesnโ€™t work โ†’ donโ€™t proceed.


๐Ÿ“ฆ Create an App (Core Django Concept)

Project = entire system
App = feature/module

python manage.py startapp core

Structure:

core/
โ”œโ”€โ”€ admin.py
โ”œโ”€โ”€ apps.py
โ”œโ”€โ”€ models.py
โ”œโ”€โ”€ views.py
โ”œโ”€โ”€ tests.py
โ””โ”€โ”€ migrations/

โš™๏ธ Register App

In settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'core',  # add this
]

๐ŸŒ First View (Hello World)

core/views.py

from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello Django")

๐Ÿ”— URL Mapping

core/urls.py

from django.urls import path
from .views import home

urlpatterns = [
    path('', home),
]

Connect app URLs

myproject/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('core.urls')),
]

๐Ÿง  Django Request Flow (Important)

Browser โ†’ urls.py โ†’ views.py โ†’ response

No magic. Just routing.


๐Ÿงฑ Templates (HTML Rendering)

Create folder:

core/templates/
โ””โ”€โ”€ home.html

home.html

<!DOCTYPE html>
<html>
<head>
    <title>Django</title>
</head>
<body>
    <h1>Hello from Template</h1>
</body>
</html>

Update View

from django.shortcuts import render

def home(request):
    return render(request, 'home.html')

๐Ÿ“‚ Static Files (CSS / JS)

Create:

core/static/core/style.css

style.css

body {
    background: #f4f4f4;
}

Load in template

{% load static %}
<link rel="stylesheet" href="{% static 'core/style.css' %}">

๐Ÿงฎ Models (Database Layer)

core/models.py

from django.db import models

class Student(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()
    email = models.EmailField(unique=True)

    def __str__(self):
        return self.name

๐Ÿ—„๏ธ Migrations (DB Sync)

python manage.py makemigrations
python manage.py migrate

Never edit DB directly. Django owns it.


๐Ÿ” Admin Panel (Superpower)

Create admin user:

python manage.py createsuperuser

Register model:

core/admin.py

from django.contrib import admin
from .models import Student

admin.site.register(Student)

Visit:

http://127.0.0.1:8000/admin

Forms (User Input)

core/forms.py

from django import forms
from .models import Student

class StudentForm(forms.ModelForm):
    class Meta:
        model = Student
        fields = '__all__'

๐Ÿง  CRUD View Example

from django.shortcuts import render, redirect
from .forms import StudentForm

def add_student(request):
    form = StudentForm(request.POST or None)
    if form.is_valid():
        form.save()
        return redirect('/')
    return render(request, 'form.html', {'form': form})

โŒ Common Beginner Mistakes

โŒ Not using virtual env
โŒ Forgetting to add app in INSTALLED_APPS
โŒ Editing DB manually
โŒ Mixing logic in templates
โŒ Ignoring migrations


๐Ÿงฉ Django Mental Model (Remember This)

Layer Responsibility
URLs Routing
Views Logic
Templates UI
Models Data
Forms Validation

๐Ÿ”œ What to Learn Next (Order Matters)

  1. Django ORM queries

  2. Authentication system

  3. Django REST Framework (DRF)

  4. Deployment (Gunicorn + Nginx)

  5. PostgreSQL


๐Ÿง  Final Advice (No Sugarcoating)

Django rewards discipline.
If youโ€™re lazy with structure โ†’ Django will punish you.
If you respect conventions โ†’ Django scales beautifully.


If you want:

  • API-only Django

  • Django + React

  • Django REST Framework notes

  • Real-world project README

Say it directly.