Install Python and Pip
Check Python and pip versions:
python --version pip --version
Download Python: https://www.python.org/downloads/
Create New Virtual Environment
python -m venv env
- python: Runs the Python interpreter.
- -m venv: Tells Python to run the venv module (used to create virtual environments).
- env: The name of the virtual environment folder (can be anything like
env,.venv,myenv).
Activate the Virtual Environment
env\Scripts\activate
This tells Windows to use the Python interpreter and packages inside the env folder, instead of the global Python on your system.
After activation, command prompt will change to something like:
(env) C:\Users\Hemant\Desktop\django-projects>
Install Django
pip install django
Check Installation
django-admin --version
Create a Django Project
django-admin startproject mysite cd mysite python manage.py runserver
- manage.py: A command-line utility Django creates for every project.
- runserver: Starts the built-in development server to test your site locally.
python manage.py runserver 8080 (optional port)
Folder Structure
myproject/
├── manage.py
└── myproject/
├── __init__.py
├── settings.py
├── urls.py
├── asgi.py
└── wsgi.py
Explanation
- Outer myproject/: Project root containing settings and
manage.py. - manage.py: CLI tool for Django.
- Inner myproject/: Contains actual project config files:
__init__.py:Makes the folder a Python package.settings.py:Main project settings.urls.py:Root URL router.asgi.py:For asynchronous deployment.wsgi.py:For WSGI deployment.
Create a New App
python manage.py startapp blog
Add the app to INSTALLED_APPS in settings.py:
INSTALLED_APPS = [
...
'blog',
]
App Routing
Create urls.py in the blog app if not present:
from django.urls import path
from . import views
urlpatterns = [
path('', views.home),
]
Views
Edit views.py to define your route:
from django.shortcuts import render
from django.http import HttpResponse
def home(request):
return HttpResponse("Hello World")
Register App Routes to Main Project
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('blog/', include('blog.urls')),
path('admin/', admin.site.urls),
]
Use Templates to Render HTML
Create a folder templates inside the blog app and add HTML files like home.html.
Update the view to render the HTML:
def home(request):
return render(request, 'home.html')
Submit Form in Django
- Ensure all inputs have
nameattribute. - Include CSRF token:
{% csrf_token %} - Check method:
if request.method == "POST":
- Get input values:
name = request.POST.get("name")
- Format string:
print(f"name {name}")
Connect Django to MySQL
pip install mysqlclient
Update settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'pyt',
'USER': 'root',
'PASSWORD': '12345',
'HOST': '127.0.0.1',
'PORT': '3311',
}
}
Create Models
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=20, unique=True)
class Post(models.Model):
category = models.ForeignKey(Category, on_delete=models.PROTECT)
title = models.CharField(max_length=100)
body = models.TextField()
created_on = models.DateTimeField(auto_now_add=True)
last_modified = models.DateTimeField(auto_now=True)
Run Migrations
python manage.py makemigrations python manage.py migrate
To modify database (add/remove fields):
python manage.py makemigrations python manage.py migrate
Session in Django
- Create:
request.session['username'] = 'ct' - Get:
username = request.session.get('username', 'Guest') - Delete:
del request.session['username']
Cookies in Django
- Create:
response.set_cookie('name', 'ct', max_age=3600) - Get:
name = request.COOKIES.get('name') - Delete:
response.delete_cookie('name')
Django Authentication
(Continue this section based on what you want to include — login, logout, user creation, etc.)