Django Web Development Introduction | Python Sinhala Tutorial

Django Web Development Introduction | Python Sinhala Tutorial

හලෝ යාළුවනේ! කොහොමද ඔයාලට? මම හිතනවා ඔයාලා හැමෝම හොඳින් ඉන්නවා ඇති කියලා. අද අපි කතා කරන්න යන්නේ Web Development ලෝකයේ ගොඩක් ජනප්‍රිය, බලවත් සහ පහසු Python Web Framework එකක් ගැන. ඒ තමයි Django!

දැන් Web Development කියන්නේ අලුත් දෙයක් නෙවෙයිනේ. හැමදාම අලුත් දේවල් එන, ගොඩක් වේගයෙන් වෙනස් වෙන ක්ෂේත්‍රයක්. ඒ අතරේ Python වගේ Programming Language එකක් පාවිච්චි කරලා Web Application හදනවා නම්, Django කියන්නේ ඔයාට තියෙන හොඳම option එකක්. Instagram, Spotify, YouTube වගේ ලොකු platforms පවා Django භාවිතා කරනවා කිව්වම ඔයාට හිතාගන්න පුළුවන්නේ මේක කොච්චර බලවත්ද කියලා.

මේ Guide එකෙන් අපි, Django කියන්නේ මොකක්ද, ඒක වැඩ කරන්නේ කොහොමද, සහ ඔයාගේ පළවෙනි Django Project එක කොහොමද හදන්නේ කියලා මුල සිටම පියවරෙන් පියවර බලමු. Python එක්ක Web Applications හදන්න බලාපොරොත්තු වෙන ඕනම කෙනෙකුට මේක හොඳ ආරම්භයක් වෙයි කියලා මම විශ්වාස කරනවා. එහෙනම්, අපි පටන් ගමු!

1. Django කියන්නේ මොකක්ද?

සරලවම කිව්වොත්, Django කියන්නේ Python වලින් ලියපු free සහ open-source Web Framework එකක්. Web Applications ඉක්මනින් සහ පහසුවෙන් හදන්න ඕන කරන tools සහ features ගොඩක් මේකේ තියෙනවා.

Django's "Batteries Included" Philosophy

Django ගොඩක් ජනප්‍රිය වෙන්න එක ප්‍රධානම හේතුවක් තමයි මේ "Batteries Included" කියන concept එක. මේකෙන් කියවෙන්නේ, ඔයාට Web Application එකක් හදන්න අවශ්‍ය වෙන පොදු features ගොඩක් Django එක්කම එනවා කියන එකයි. වෙනම install කරන්න, configure කරන්න ඕනේ නැහැ. හිතන්න, ඔයා ගමනක් යන්න වාහනයක් ගත්තාම, ඒකේ එන්ජිම, රෝද, lights, AC වගේ හැමදේම එක්කම එනවා වගේ. Djangoත් ඒ වගේ. මේකේ දැනටමත් තියෙන features කිහිපයක් තමයි:

  • ORM (Object-Relational Mapper): Database එක එක්ක පහසුවෙන් වැඩ කරන්න. SQL queries ලියන්න ඕනේ නැහැ. Python code වලින්ම database operations කරන්න පුළුවන්.
  • Admin Panel: ඔයාගේ Web Application එකේ data manage කරන්න ලස්සන, auto-generated Admin Interface එකක්.
  • Authentication System: User Login, Logout, Registration, Password Reset වගේ දේවල් පහසුවෙන් කරන්න පුළුවන්.
  • Templating Engine: HTML pages dynamic කරන්න. Python data HTML වලට pass කරලා display කරන්න පුළුවන්.
  • Security Features: CSRF protection, XSS protection වගේ දේවල් built-in.

මේ නිසා, developers ලට Application එකේ core logic එකට වැඩි අවධානයක් දෙන්න පුළුවන් වෙනවා, පොදු features වලට කාලය නාස්ති නොකර.

MVT Architecture: Django's වැඩ කරන විදිහ (How Django Works)

Django වැඩ කරන්නේ MVT (Model-View-Template) කියන Architectural Pattern එකට අනුවයි. මේක MVC (Model-View-Controller) එකට සමාන වුවත්, Django වල Controller කොටස Framework එකෙන්ම handle කරන නිසා View සහ Template වලට වැඩි අවධානයක් දෙනවා.

  • Model: මේක තමයි ඔයාගේ Application එකේ data structure එක. Database එකේ Tables වලට අදාළයි. Python classes වලින් මේවා define කරනවා. (e.g., User, Product, Post)
  • View: මේක තමයි Application එකේ business logic එක. User request එකක් ආවම, ඒ request එක process කරලා, Model එකෙන් data අරගෙන, Template එකට යවන එක View එකකින් කරනවා. Python functions හෝ classes වලින් මේවා define කරනවා.
  • Template: User ට පේන Web Interface එක (HTML, CSS, JavaScript) මේකේ තියෙනවා. View එකෙන් එවන data මේ Template එකේ display කරනවා.

සරලව කිව්වොත්:

  1. User කෙනෙක් Browser එකේ URL එකක් Type කරනවා (Request).
  2. Django Framework එක ඒ URL එක අදාළ View එකට යවනවා.
  3. View එක Model එක හරහා Database එකෙන් අවශ්‍ය data ගන්නවා.
  4. View එක ඒ data Template එකකට pass කරනවා.
  5. Template එක data එක්ක combine වෙලා HTML Page එකක් හදනවා.
  6. Django ඒ HTML Page එක User ගේ Browser එකට Response එකක් විදිහට යවනවා.

2. Django Setup කරමු සහ Project එකක් හදමු

දැන් අපි බලමු Django install කරලා, අපේ පළවෙනි Project එක කොහොමද හදන්නේ කියලා.

අවශ්‍ය දේවල් (Prerequisites)

ඔයාගේ System එකේ පහත දේවල් install කරලා තියෙන්න ඕනේ:

  • Python: Python 3.8 හෝ ඊට වැඩි Version එකක්.
  • pip: Python package installer එක. Python install කරනකොට මේකත් එක්කම install වෙනවා.

මේවා තියෙනවද කියලා check කරන්න Terminal/Command Prompt එක Open කරලා මේ Commands Run කරන්න:

python --version
pip --version

Virtual Environment එකක් හදමු (Creating a Virtual Environment)

ඕනෑම Python Project එකක් කරනකොට, Virtual Environment එකක් පාවිච්චි කරන එක Best Practice එකක්. මේකෙන් වෙන්නේ ඔයාගේ Project එකට අදාළ dependencies (packages) ටික වෙනමම තියාගන්න පුළුවන් වෙන එකයි. ඒකෙන් ඔයාගේ System එකේ තියෙන අනෙක් Python Projects වලට හෝ Global Packages වලට බලපෑමක් වෙන්නේ නැහැ.

ඔයාගේ Project එකට අලුත් Folder එකක් හදලා ඒකට යන්න:

mkdir my_django_project
cd my_django_project

දැන් Virtual Environment එක හදමු:

python -m venv venv

Virtual Environment එක Activate කරන්න:

Windows:

venv\Scripts\activate

Linux / macOS:

source venv/bin/activate

දැන් ඔයාගේ Terminal/Command Prompt එකේ නමට ඉස්සරහින් (venv) කියලා පේනවා නම්, Virtual Environment එක successful විදිහට Activate වෙලා.

Django Install කරමු (Installing Django)

Virtual Environment එක Activate කරගත්තට පස්සේ, අපි Django Install කරමු:

pip install django

Installation එක ඉවර වුණාම, Django install වෙලාද කියලා check කරන්න පුළුවන් මේ විදිහට:

pip show django

පළවෙනි Project එක (Your First Project)

දැන් අපි Django Project එකක් හදමු. Project එක කියන්නේ ඔයාගේ Web Application එකේ සමස්ත Configuration සහ Settings ටික තියෙන තැන. Project එක ඇතුලේ තමයි ඔයාගේ Apps කිහිපයක් තියෙන්නේ.

ඔයා my_django_project කියන Folder එක ඇතුලේ ඉන්න බවට වග බලාගන්න. එතනම Project එක හදන්න . (dot) එක පාවිච්චි කරන්න:

django-admin startproject mysite .

මේ Command එක Run කරාම my_django_project Folder එක ඇතුලේ mysite කියන Sub-folder එකක් සහ manage.py කියන File එක හැදෙනවා. ඔයාගේ Project Structure එක මේ වගේ වෙයි:

my_django_project/
├── manage.py
└── mysite/
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py
  • manage.py: මේක තමයි Project එක manage කරන්න පාවිච්චි කරන Command-line utility එක. Database migrations run කරන්න, development server එක start කරන්න වගේ දේවල් වලට මේක පාවිච්චි කරනවා.
  • mysite/: මේක ඔයාගේ Project එකේ Configuration Files තියෙන Folder එක.
  • mysite/settings.py: Project එකේ සියලුම Settings මේකේ තියෙනවා. (Database settings, Installed Apps, Static files paths වගේ දේවල්).
  • mysite/urls.py: Project එකේ URL declarations (Root URLconf) මේකේ තියෙනවා. මේකෙන් තමයි incoming requests වලට අදාළ Views වලට යොමු කරන්නේ.
  • mysite/wsgi.py, wsgi.py asgi.py: Production deployment වලදී Web servers එක්ක communicate කරන්න පාවිච්චි කරන Files.

Development Server එක Run කරමු (Running the Development Server)

දැන් අපි Project එක සාර්ථකව හදාගත්ත නිසා, ඒක Browser එකේ බලමු. my_django_project Folder එකේ ඉඳන් මේ Command එක Run කරන්න:

python manage.py runserver

මේ Command එක Run කරාට පස්සේ ඔයාට Terminal එකේ මේ වගේ Message එකක් පෙනෙයි:

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
April 09, 2024 - 10:30:00
Django version 5.0.4, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

http://127.0.0.1:8000/ කියන URL එක Browser එකේ Open කරාම, ඔයාට Django's "It worked!" page එක පෙනෙයි. ඒක දැක්කා නම්, ඔයා Django Project එක සාර්ථකව Run කරලා!

සැලකිය යුතුයි: උඩ පේන message එකේ "You have 18 unapplied migration(s)." කියලා දැක්කා නේද? මේවා තමයි Django වල built-in features (Admin, Authentication වගේ) වලට අදාළ Database Table structures. මේවා database එකට apply කරන්න runserver නවත්වලා මේ command එක run කරන්න:

python manage.py migrate

මේකෙන් Django වලට අවශ්‍ය Database Tables ටික ඔයාගේ Project එකේ default SQLite database එකේ හදනවා. ඊට පස්සේ ආයෙත් python manage.py runserver කරන්න. දැන් warning එකක් නැතුව Project එක run වෙයි.

3. App එකක් හදමු සහ Paths Set කරමු

Project එක සාර්ථකව හැදුවට, වැඩේ ඉවර නැහැ. දැන් අපි බලමු "App" එකක් කියන්නේ මොකක්ද සහ ඒක Project එකට connect කරන්නේ කොහොමද කියලා.

Project vs. App: වෙනස තේරුම් ගනිමු (Understanding the Difference)

මේක ගොඩක් අයට මුලදී අවුල් වෙන තැනක්. ඒ නිසා හොඳට තේරුම් ගමු.

  • Project: සම්පූර්ණ Web Application එක. Project එකට අදාළ Settings, Configurations, URLs වගේ දේවල් තියෙනවා. (හිතන්න, ඔයාගේ ගෙදර Project එක වගේ)
  • App: Project එක ඇතුලේ තියෙන, specific functionality එකක් කරන Module එකක්. Apps නැවත නැවත භාවිතා කරන්න පුළුවන් විදිහට (reusable) හදන්න පුළුවන්. (හිතන්න, ඔයාගේ ගෙදර "කාමරයක්" වගේ. Bedroom එක, Kitchen එක වගේ. මේවා වෙනම වුණත් ගෙදරට අයිතියි.)

උදාහරණයක් විදිහට, ඔයා Blog එකක් හදනවා නම්, 'blog' කියන App එකක් හදන්න පුළුවන්. Users manage කරන්න 'users' කියන App එකක්, Products manage කරන්න 'products' කියන App එකක් වගේ. මේ හැම App එකක්ම එකම Project එකක් යටතේ වැඩ කරනවා.

පළවෙනි App එක හදමු (Creating Your First App)

දැන් අපි අපේ පළවෙනි App එක හදමු. my_django_project Folder එකේ ඉඳන් (manage.py තියෙන තැන) මේ Command එක Run කරන්න:

python manage.py startapp myapp

මේකෙන් myapp කියලා අලුත් Folder එකක් හැදෙනවා. Project Structure එක දැන් මේ වගේ වෙයි:

my_django_project/
├── manage.py
├── myapp/
│   ├── migrations/
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── mysite/
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

myapp Folder එක ඇතුලේ තියෙන වැදගත්ම Files ටික බලමු:

  • myapp/views.py: App එකේ Views (business logic) මේකේ ලියනවා.
  • myapp/models.py: App එකේ Models (database structure) මේකේ define කරනවා.
  • myapp/admin.py: Django Admin Panel එකට Models register කරන්නේ මේකෙන්.

App එක Project එකට connect කරමු (Connecting the App to the Project)

App එකක් හැදුවට, ඒක Project එකට connect කරන්නේ නැතුව Django දන්නේ නැහැ ඒ App එක ගැන. ඒ නිසා අපි mysite/settings.py File එක Open කරලා INSTALLED_APPS කියන List එකට අපේ App එකේ නම ('myapp') එකතු කරන්න ඕනේ.

# mysite/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',  # අපේ අලුත් App එක මෙතනට එකතු කරන්න
]

'myapp', එකතු කරලා File එක Save කරන්න.

Views සහ URLs හදමු (Creating Views and URLs)

දැන් අපි අපේ myapp එකේ "Hello World" View එකක් හදමු.

1. myapp/views.py Edit කරමු:

# myapp/views.py

from django.shortcuts import render
from django.http import HttpResponse

def home(request):
    return HttpResponse("<h1>Hello from my Django App!</h1>")

මේ home කියන function එක User request එකක් ආවම, "Hello from my Django App!" කියන Text එක Browser එකට Response එකක් විදිහට යවනවා. HttpResponse කියන්නේ Django වලින් එන Class එකක්.

2. myapp එකට අලුත් urls.py File එකක් හදමු:

myapp Folder එක ඇතුලේ urls.py කියලා අලුත් File එකක් හදන්න. (mysite Folder එකේ දැනටමත් urls.py එකක් තියෙනවා. මේක App එකට අදාළ එක.)

# myapp/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]

මේකෙන් කියවෙන්නේ, App එකේ Root URL ('') එකට Request එකක් ආවම, views.home කියන function එක Run කරන්න කියලයි.

3. Project එකේ urls.py (Root URLconf) එක Update කරමු:

දැන් අපි Project එකේ mysite/urls.py File එක Open කරලා, අපේ myapp එකේ URLs Project එකට include කරන්න ඕනේ.

# mysite/urls.py

from django.contrib import admin
from django.urls import path, include # include එක import කරගන්න

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.urls')), # අපේ App එකේ URLs මෙතනට include කරනවා
]

මෙහිදී, path('myapp/', include('myapp.urls')) කියන Line එකෙන් කියවෙන්නේ http://127.0.0.1:8000/myapp/ කියන URL එකට Request එකක් ආවම, ඒක myapp Folder එක ඇතුලේ තියෙන urls.py File එකට යොමු කරන්න කියලයි. එතනින් එහාට, myapp/urls.py එකේ තියෙන urlpatterns අනුව Request එක process කරනවා.

දැන්, python manage.py runserver කරලා Browser එකේ http://127.0.0.1:8000/myapp/ කියන URL එකට යන්න. ඔයාට "Hello from my Django App!" කියලා පෙනෙයි. සුභ පැතුම්! ඔයා ඔයාගේ පළවෙනි Django View එක සාර්ථකව හදාගෙන Run කරා!

4. Best Practices & Troubleshooting Tips

Django එක්ක වැඩ කරනකොට මතක තියාගන්න ඕන වැදගත් කරුණු කිහිපයක් සහ පොදු ගැටළු වලට විසඳුම් බලමු.

Apps නැවත භාවිතා කළ හැකි ලෙස තියාගමු (Keep Apps Reusable)

මේක Django වලදී ගොඩක් වැදගත් Best Practice එකක්. ඔයා App එකක් හදනකොට, ඒක පුළුවන් තරම් single, focused functionality එකක් කරන විදිහට හදන්න. ඒ කියන්නේ, Blog App එකකින් Blog Posts විතරක් manage කරන්න. User Management App එකකින් Users විතරක් manage කරන්න.

මේකෙන් වෙන්නේ, ඔයාට අනාගතයේදී අලුත් Project එකක් හදනකොට, ඔයා කලින් හදපු Apps ඒ අලුත් Project එකටත් පහසුවෙන් එකතු කරගන්න පුළුවන් වෙන එකයි. මේකෙන් Development Time එක ගොඩක් අඩු වෙනවා.

Settings.py ගැන සැලකිලිමත් වෙමු (Be Mindful of Settings.py)

settings.py කියන්නේ Project එකේ හදවත වගේ. මේකේ තියෙන වැදගත් Settings ටික ගැන දැනුවත්ව ඉන්න:

  • DEBUG = True/False: Development කරනකොට True තිබ්බට Production වලට deploy කරනකොට අනිවාර්යයෙන් False කරන්න ඕනේ. නැත්නම් Security Issues එන්න පුළුවන්.
  • SECRET_KEY: මේක Security වලට වැදගත්. මේක කවදාවත් publicly share කරන්න එපා. Production වලදී Environment Variable එකකින් ගන්න පුරුදු වෙන්න.
  • ALLOWED_HOSTS: Production වලට deploy කරනකොට ඔයාගේ Domain Name එක මේ List එකට එකතු කරන්න ඕනේ. නැත්නම් Project එකට access කරන්න බැහැ.
  • DATABASES: ඔයාගේ Database settings (PostgreSQL, MySQL වගේ) මෙතන define කරනවා.

Troubleshooting Common Errors (සාමාන්‍ය වැරදි හඳුනාගැනීම)

  • "No module named Django" or other package errors:මේක ගොඩක් වෙලාවට වෙන්නේ ඔයා Virtual Environment එක Activate නොකර Commands Run කරනකොට. නැත්නම් Django install කරලා නැතිකොට. Virtual Environment එක activate කරලා pip install django කරලා ආයෙත් බලන්න.
  • "Page not found (404)" or "Reverse for 'x' not found":මේක URL එකක් වැරදි විදිහට define කරාම හෝ URL එකට අදාළ View එකක් නැතිකොට එන Error එකක්. mysite/urls.py සහ ඔයාගේ App එකේ urls.py Files දෙකේම Paths හරියට define කරලාද කියලා Check කරන්න. INSTALLED_APPS එකට App එක එකතු කරලාද කියලත් බලන්න.
  • Database Migration Errors:Model එකක් වෙනස් කරාට පස්සේ python manage.py makemigrations සහ python manage.py migrate Commands අනිවාර්යයෙන් Run කරන්න ඕනේ. නැත්නම් Database Tables Update වෙන්නේ නැහැ. makemigrations කරාම අලුත් migration file එකක් හැදෙනවා. migrate කරාම ඒක Database එකට apply වෙනවා.
  • Syntax Errors:Python code එකේ syntax වැරදි වුණාම මේවා එනවා. Terminal එකේ දෙන Error Message එක හොඳට කියවලා, ඒකේ කියන Line Number එකට ගිහින් code එක check කරන්න.

Conclusion: දැන් මොකද කරන්නේ?

ඔන්න එහෙනම්, අපි සාර්ථකව Django කියන්නේ මොකක්ද, ඒකේ "Batteries Included" philosophy එක, MVT Architecture එක, Project එකක් සහ App එකක් හදන හැටි, development server එක run කරන හැටි සහ URL routing කරන හැටි වගේ ගොඩක් දේවල් ඉගෙන ගත්තා.

දැන් ඔයාට Django එක්ක Web Development ලෝකයට අතපොවන්න හොඳ ආරම්භයක් තියෙනවා. මේක නිකන්ම theory විතරක් තියාගන්නේ නැතුව, තව පොඩි පොඩි experiments කරලා බලන්න. තව Views හදන්න, URLs add කරන්න. Database එක්ක වැඩ කරන හැටි, Templates හදන හැටි වගේ දේවල් ඉස්සරහට ඉගෙන ගන්න.

මතක තියාගන්න, Programming කියන්නේ නිකන්ම code කරන එක නෙවෙයි, practice කරන එක. ඒ නිසා, අලුත් Project එකක් පටන් අරන්, මේ ඉගෙන ගත්ත දේවල් apply කරලා බලන්න. පොඩි Blog එකක් හදන්න උත්සාහ කරන්න, නැත්නම් To-Do List App එකක් හදන්න. එහෙම කරනකොට ඔයාට අලුත් දේවල් ගොඩක් ඉගෙන ගන්න පුළුවන් වෙයි.

මේ Tutorial එක ඔයාට ප්‍රයෝජනවත් වෙන්න ඇති කියලා මම හිතනවා. ඔයාගේ අදහස්, ප්‍රශ්න, හෝ මේක try කරලා බලද්දී ආපු අත්දැකීම් පහතින් comment කරන්න. අපි හැමෝම එකට ඉගෙන ගනිමු!

Happy Coding!