Django Tutorial Sinhala | Python Web Development Beginners Guide

සුභ දවසක් යාළුවනේ! අද අපි කතා කරන්න යන්නේ Web Development ලෝකයේ ගොඩක් දෙනෙක් අතර ජනප්රිය වුණු, ඊටත් වඩා Python Programming Language එක දන්න කෙනෙක්ට Web Development වලට පිවිසෙන්න පුදුමාකාර පහසුවක් සලසන, Powerful Framework එකක් ගැන. ඒ තමයි Django!
Web Development කියන මාතෘකාව ඇහෙනකොට සමහරුන්ට පොඩි බයක් එන්න පුළුවන්. ඒත් Django වගේ Framework එකක් තියෙන නිසා, ඒ බය ටිකක් අඩුවෙයි කියලා මට විශ්වාසයි. විශේෂයෙන්ම ඔයා Python එක්ක වැඩ කරලා තියෙනවා නම්, Django ඔයාට ගොඩක් සමීප වෙයි.
මේ tutorial එකෙන් අපි Django කියන්නේ මොකක්ද, ඒකේ තියෙන විශේෂ දේවල් මොනවද, කොහොමද project එකක් සහ app එකක් පටන් ගන්නේ කියන එක මුල ඉඳන්ම සරලව සිංහලෙන් කතා කරනවා. ඔයාගේ පළමු Django Web Application එක හදන ගමනට අපි මේකෙන් අත හිත දෙනවා. එහෙනම්, අපි පටන් ගමු!
1. Django කියන්නේ මොකක්ද? (What is Django?)
සරලවම කිව්වොත්, Django කියන්නේ Python වලින් ලියපු Web Framework එකක්. ඒක මූලිකවම නිර්මාණය කරලා තියෙන්නේ සංකීර්ණ, Database-driven Websites ඉක්මනින් සහ පහසුවෙන් හදන්න පුළුවන් විදියට. Django වල තියෙන ප්රධානම වාසියක් තමයි ඒකේ තියෙන “Batteries Included” philosophy එක.
“Batteries Included” Philosophy එක කියන්නේ මොකක්ද?
මේකෙන් අදහස් වෙන්නේ Django එක්ක ඔයාට Web Application එකක් හදන්න අවශ්ය වෙන බොහෝ දේවල් (features) ඒක ඇතුලෙන්ම එනවා කියන එක. වෙනම Library හෝ Tools හොය හොයා install කරන්න අවශ්ය වෙන්නේ නැහැ. උදාහරණයක් විදියට:
- ORM (Object-Relational Mapper): Database එක්ක Python code වලින්ම වැඩ කරන්න පුළුවන්. SQL queries ලියන්න අවශ්ය වෙන්නේ නැහැ ගොඩක් වෙලාවට.
- Admin Panel: ඔයාගේ Web App එකට පුළුවන් ඉක්මනට Data Management Interface එකක් හදාගන්න පුළුවන්.
- Authentication System: User Login, Logout, Registration වගේ දේවල් Built-in එනවා.
- Templating Engine: HTML එක්ක Python Logic පාවිච්චි කරලා Dynamic Web Pages හදන්න පුළුවන්.
- URL Routing: Web Addresses (URLs) Handle කරන්න පහසු ක්රමයක්.
මේ වගේ දේවල් නිසා ඔයාට ඔයාගේ Application එකේ Core Logic එකට අවධානය යොමු කරන්න පුළුවන්, අනවශ්ය Boilerplate code ලියන එකෙන් ගැලවෙන්න පුළුවන්.
MVT (Model-View-Template) Architecture
Django MVT Architecture එක පාවිච්චි කරනවා. මේක MVC (Model-View-Controller) Architecture එකට ගොඩක් සමානයි, ඒත් Django වලට ආවේණික විදියක් තියෙනවා:
- Model: මේක තමයි ඔයාගේ Data Structure එක. Database එකේ දත්ත කොහොමද තියෙන්නේ, ඒවට Access කරන්නේ කොහොමද කියන එක මේකෙන් define කරනවා. (Database layer)
- View: මේක තමයි Application Logic එක. User ගෙන් Request එකක් ආවම, ඒ Request එක Process කරලා, Model එකෙන් Data අරගෙන, Template එකට යවන එක කරන්නේ View එකෙන්. (Logic layer - MVC එකේ Controller වගේ)
- Template: මේක තමයි User ට පේන HTML Structure එක. View එකෙන් එවන Data අරගෙන, Template එකෙන් ඒ Data User ට පේන්න සකස් කරනවා. (Presentation layer - UI)
මේ වගේ පැහැදිලි වෙන් කිරීමක් තියෙන නිසා, Project එක maintain කරන්න සහ Scalable කරන්න පහසු වෙනවා.
2. Django Project එකක් පටන් ගමු! (Let's Start a Django Project!)
හරි, දැන් අපි Django ගැන පොඩි අවබෝධයක් ගත්තා. ඊළඟට අපි බලමු කොහොමද ඇත්තටම Django Project එකක් පටන් ගන්නේ කියලා.
අවශ්ය දේවල් (Prerequisites)
- Python: ඔයාගේ Computer එකේ Python (3.6 හෝ ඊට වැඩි Version එකක්) Install කරලා තියෙන්න ඕනේ.
- pip: Python Install කරද්දී මේකත් එක්කම එනවා. Python Package Installer එක තමයි මේ.
මේවා තියෙනවද කියලා බලන්න Command Prompt (Windows) හෝ Terminal (macOS/Linux) එක open කරලා මේ commands ටික type කරන්න:
python --version
pip --version
Versions පෙනෙනවා නම්, ඔයා Ready!
Virtual Environment එකක් හදාගනිමු (Setting up a Virtual Environment)
Web Development කරනකොට Virtual Environment එකක් පාවිච්චි කරන එක ගොඩක් වැදගත් Best Practice එකක්. මේකෙන් කරන්නේ ඔයාගේ Project එකටම වෙනම Python Environment එකක් හදන එක. ඒකෙන් ඔයා install කරන Libraries මේ Project එකට විතරක් සීමා වෙනවා. ඒක නිසා වෙන Project වලට මේවායින් බලපෑමක් වෙන්නේ නැහැ.
ඔයාගේ Project එක හදන්න ඕන Folder එකට ගිහින් (උදා: C:\Projects\MyDjangoApp
) මේ විධාන ටික Type කරන්න:
# Virtual Environment එකක් හදනවා 'venv' කියන නමින්
python -m venv venv
# Virtual Environment එක activate කරනවා
# Windows වල නම්:
venv\Scripts\activate
# macOS / Linux වල නම්:
source venv/bin/activate
ඔයාගේ Command Prompt එකේ මුලට (venv)
කියලා ආවොත්, ඒ කියන්නේ Virtual Environment එක Active වෙලා.
Django Install කරමු!
Virtual Environment එක activate කරලා තියෙනකොට, දැන් අපි Django Install කරමු:
pip install django
ටික වෙලාවකින් Django Install වෙලා ඉවර වෙයි.
Project එකක් හදන හැටි (`startproject`)
දැන් අපි Project එකක් හදමු. mysite
කියලා නමක් දෙමු.
django-admin startproject mysite .
.
(dot) එක දාපු එක ගොඩක් වැදගත්. ඒකෙන් කියන්නේ Project files ටික දැන් ඔයා ඉන්න Folder එක ඇතුලටම දාන්න කියලා. නැත්නම්, mysite
කියලා Folder එකක් ඇතුලේ තව mysite
කියලා Folder එකක් හැදෙනවා. (Project Folder Structure එකේදී මේක වැදගත් වෙනවා).
දැන් ඔයාගේ Folder එක ඇතුලේ මේ වගේ Structure එකක් තියෙන්න ඕනේ:
MyDjangoApp/
├── venv/
├── mysite/
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
මේ Files ගැන පොඩ්ඩක් බලමු:
manage.py
: මේක තමයි Django Project එක Handle කරන්න පාවිච්චි කරන Command-line utility එක. (e.g., runserver, migrate, createsuperuser)mysite/
(Project Folder): මේක තමයි ඔයාගේ Project එකේ Root Folder එක.mysite/__init__.py
: මේක Python package එකක් බව හඳුන්වන හිස් file එකක්.mysite/settings.py
: ඔයාගේ Project එකේ සියලුම Settings මේක ඇතුලේ තියෙනවා (Database, Installed Apps, Static files වගේ දේවල්).mysite/urls.py
: මේක තමයි Project එකේ Main URL configurations තියෙන file එක.mysite/wsgi.py
: Web Server Gateway Interface file එක. Production Deployment වලට වැදගත්.mysite/asgi.py
: Asynchronous Server Gateway Interface file එක. Asynchronous Python applications වලට.
Development Server එක Run කරමු!
දැන් අපි හදපු Project එක Run කරලා බලමු.
ඔයාගේ Folder එක ඇතුලේ manage.py
තියෙන තැන ඉඳන් මේ Command එක Type කරන්න:
python manage.py runserver
මේ Command එක දුන්නම ඔයාට Server address එකක් ලැබෙයි (සාමාන්යයෙන් http://127.0.0.1:8000/
). ඒක Browser එකේ Open කරන්න. මේ වගේ Page එකක් පෙනෙයි:
“The install worked successfully! Congratulations!”
ඔයාට මේ වගේ Message එකක් පෙනෙයි:
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
මේකෙන් කියන්නේ Django වලට Built-in විදියට එන Admin Panel, Authentication වගේ දේවල් වලට අවශ්ය Database Tables තාම හැදිලා නැහැ කියලා. ඒවා හදන්න මේ Command එක දෙන්න ඕනේ:
python manage.py migrate
migrate
කරලා ආයෙත් python manage.py runserver
දීලා Browser එක refresh කරලා බලන්න. දැන් අර warning එක නැති වෙලා ඇති.
3. Django Apps කියන්නේ මොනවද? (What are Django Apps?)
දැන් අපි Project එකක් හදාගෙන Run කරගත්තා. ඊළඟට අපි කතා කරමු Apps ගැන. Django වලදී Project එකක් කියන්නේ සම්පූර්ණ Web Application එකට. ඒත්, ඒ Application එක ඇතුලේ තියෙන විශේෂිත Features (module) අපි Apps විදියට හදනවා. උදාහරණයක් විදියට, Blog Website එකක:
- Blog Posts Manage කරන්න
blog
කියන App එකක්. - User Management වලට
users
කියන App එකක්. - Comments වලට
comments
කියන App එකක්.
මේ වගේ Apps වෙන වෙනම තියෙන නිසා, Project එක සංවිධානය කරන්න, maintain කරන්න සහ Apps නැවත පාවිච්චි කරන්න (reusable) පහසු වෙනවා.
App එකක් හදන හැටි (`startapp`)
manage.py
තියෙන Folder එකට ගිහින් මේ Command එක Type කරන්න (අපි blog
කියන App එක හදමු):
python manage.py startapp blog
දැන් ඔයාගේ Folder Structure එක මේ වගේ වෙයි:
MyDjangoApp/
├── venv/
├── mysite/
│ ├── ... (project files)
├── blog/
│ ├── migrations/
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
└── manage.py
blog
Folder එක ඇතුලේ තියෙන Files ගැන පොඩ්ඩක් බලමු:
blog/migrations/
: Database Schema changes (migrations) තියෙන Folder එක.blog/admin.py
: Django Admin Panel එකට ඔයාගේ Models Register කරන්න මේක පාවිච්චි කරනවා.blog/apps.py
: App එකේ Configuration තියෙනවා.blog/models.py
: ඔයාගේ App එකට අදාළ Database Models (Data Structures) මේක ඇතුලේ define කරනවා.blog/views.py
: App එකේ Logic (Views) තියෙනවා.blog/tests.py
: App එකට අදාළ Tests ලියන්න මේක පාවිච්චි කරනවා.
App එක Project එකට Connect කරමු!
ඔයා App එකක් හැදුවට, Django Project එක දන්නේ නැහැ මේ App එක ගැන. ඒක නිසා අපි Project එකේ settings.py
File එක Open කරලා, INSTALLED_APPS
කියන List එකට අපේ App එකේ නම add කරන්න ඕනේ.
mysite/settings.py
File එකේ මේ කොටස හොයාගන්න:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
ඒකට අපේ blog
App එක add කරමු:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # අපේ අලුත් App එක මෙතනට add කරන්න
]
දැන් Django Project එක දන්නවා blog
කියන App එක ගැන.
4. Views සහ URLs හදමු! (Let's Create Views and URLs!)
දැන් අපිට Project එකක්, App එකක් තියෙනවා. අපි බලමු කොහොමද Web Page එකක් Browser එකේ පෙන්වන්නේ කියලා. ඒකට Views සහ URLs කියන දෙක ගොඩක් වැදගත්.
View එකක් හදමු (blog/views.py
)
View එකක් කියන්නේ Request එකක් ආවම ඒකට Response එකක් දෙන Python function එකක්. අපි blog
App එකේ views.py
File එක Open කරලා සරල View එකක් හදමු:
blog/views.py
from django.shortcuts import render
from django.http import HttpResponse # මේක import කරන්න
# Create your views here.
def home(request):
return HttpResponse("<h1>ආයුබෝවන්, Django ලෝකයට!</h1><p>මේක අපේ පළමු Django Page එක.</p>")
මේ home
කියන function එකට Request එකක් ආවම, ඒකෙන් HTML Content එකක් එක්ක HttpResponse
එකක් ආපහු යවනවා.
URL Conf එකක් හදමු (App Level - blog/urls.py
)
View එකක් හැදුවට මදි. ඒ View එකට යන්න පුළුවන් Web Address (URL) එකක් හදන්න ඕනේ. App එකේ URLs වෙනම තියෙන එක Best Practice එකක්. ඒක නිසා අපි blog
Folder එක ඇතුලේ urls.py
කියලා අලුත් File එකක් හදමු.
blog/urls.py
from django.urls import path
from . import views # මේ App එකේම views.py එක import කරනවා
urlpatterns = [
path('', views.home, name='home'), # root path ('/') එකට home view එක call කරනවා
]
path('', views.home, name='home')
: මේකෙන් කියන්නේ URL එකේ කිසිම දෙයක් නැත්නම් (root path එකට)views.home
කියන function එක call කරන්න කියලා.name='home'
කියන්නේ මේ URL එකට නමක් දෙන එක. පස්සේ Templates වලදී මේක ප්රයෝජනවත් වෙනවා.
Project Level URL Conf එක Update කරමු (mysite/urls.py
)
අපි App එකේ urls.py
File එක හැදුවට, Project එකේ Main URL Router එක දන්නේ නැහැ මේ App එකේ URLs ගැන. ඒක නිසා අපි mysite/urls.py
File එක Open කරලා, අපේ App එකේ URLs මේකට include කරන්න ඕනේ.
mysite/urls.py
from django.contrib import admin
from django.urls import path, include # include මේකට add කරන්න
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')), # අපේ blog App එකේ urls include කරනවා. '' දාපු නිසා root path එකටම load වෙනවා.
]
path('', include('blog.urls'))
: මේකෙන් කියන්නේ root URL එකට (/
) එන Request අපේblog
App එකේurls.py
File එකට යවන්න කියලා.
Browser එකෙන් බලමු!
දැන් ඔයාගේ Development Server එක run වෙලා නැත්නම්, manage.py
තියෙන Folder එකට ගිහින් ආයෙත් run කරන්න:
python manage.py runserver
ඊට පස්සේ Browser එකේ http://127.0.0.1:8000/
කියන Address එකට යන්න. ඔයාට මෙහෙම Page එකක් පෙනෙයි:
ආයුබෝවන්, Django ලෝකයට!
මේක අපේ පළමු Django Page එක.
සුභ පැතුම්! ඔයා සාර්ථකව ඔයාගේ පළමු Django Web Page එක නිර්මාණය කළා!
5. සාමාන්යයෙන් එන ගැටළු සහ විසඳුම් (Common Issues & Solutions)
මුලින්ම Django එක්ක වැඩ කරද්දී පොඩි පොඩි Errors එන්න පුළුවන්. බය වෙන්න එපා, ඒවා සාමාන්යයි. මෙන්න ඒ වගේ පොදු ගැටළු කීපයක් සහ ඒවාට විසඳුම්:
a. `django-admin` හෝ `python manage.py` command එක වැඩ කරන්නේ නැහැ.
- හේතුව: Python සහ Django Path එකට add වෙලා නැති වෙන්න පුළුවන්, නැත්නම් Virtual Environment එක activate කරලා නැති වෙන්න පුළුවන්.
- විසඳුම:
- Virtual Environment එක activate කරලා තියෙනවද කියලා බලන්න. (ඔයාගේ Command Prompt එකේ මුලට
(venv)
තියෙනවද?) manage.py
File එක තියෙන Folder එක ඇතුලෙමද ඔයා Command එක දාන්නේ කියලා බලන්න.- Python සහ pip හරියට Install වෙලා, Path එකට add වෙලා තියෙනවද කියලා බලන්න.
- Virtual Environment එක activate කරලා තියෙනවද කියලා බලන්න. (ඔයාගේ Command Prompt එකේ මුලට
b. `settings.py` වල App එක `INSTALLED_APPS` වලට add කරන්න අමතක වීම.
- හේතුව: Django Project එකට App එකක් හැදුවට ඒක ගැන කියන්න අමතක වීම.
- විසඳුම:
mysite/settings.py
File එක Open කරලා,INSTALLED_APPS
List එකට ඔයාගේ App එකේ නම (උදා:'blog'
) add කරන්න.
c. URL Not Found (404 Error)
- හේතුව: URL Pattern එකක් හරියට define කරලා නැති වෙන්න පුළුවන්, නැත්නම් App එකේ URL Conf එක Project එකේ URL Conf එකට include කරලා නැති වෙන්න පුළුවන්.
- විසඳුම:
- App එකේ (
blog/urls.py
) URL Pattern එක හරියට තියෙනවද බලන්න. - Project එකේ (
mysite/urls.py
) App එකේ URL Conf එකinclude()
කරලා තියෙනවද බලන්න. - Server එක restart කරන්න (Command Prompt එකේ
Ctrl+C
ඔබලා, ආයෙත්python manage.py runserver
දෙන්න).
- App එකේ (
d. Project එක සහ App එක අතර වෙනස තේරුම් ගැනීම.
- ගැටළුව: සමහරුන්ට Project එක සහ App එක අතර වෙනස තේරුම් ගන්න අමාරුයි. හැමදේම එක App එකක කරනවා.
- විසඳුම: මතක තියාගන්න, Project එක කියන්නේ මුළු Website එකටම. App එකක් කියන්නේ ඒ Website එකේ තියෙන විශේෂිත, නැවත පාවිච්චි කරන්න පුළුවන් (reusable) Feature එකකට. හැම App එකක්ම තමන්ගේම Models, Views, URLs වගේ දේවල් එක්ක ස්වාධීනව ක්රියා කරනවා. ඒක නිසා Project එකක් ඇතුලේ Apps කීපයක් තියෙන්න පුළුවන්.
6. Best Practices (හොඳම පුරුදු)
Django එක්ක වැඩ කරද්දී, ඔයාගේ Project එක Clean, Maintainable සහ Scalable වෙන්න මේ වගේ Best Practices පාවිච්චි කරන්න පුළුවන්:
- Virtual Environments හැමවිටම භාවිතා කරන්න: අපි කලින් කතා කරපු විදියට, Project එකකටම වෙනම Environment එකක් පාවිච්චි කරන එක ගොඩක් වැදගත්.
- Apps Reusable විදියට හදන්න: App එකක් හදද්දී, ඒක එක විශේෂිත Feature එකකට විතරක් සීමා කරන්න (Single Responsibility Principle). උදාහරණයක් විදියට,
blog
App එකක් ඇතුලේ User Management Logic දාන්න යන්න එපා. ඒකට වෙනමusers
App එකක් හදන්න. - Code Comments දාන්න: ඔයා ලියන Code එක අනිත් අයට තේරුම් ගන්න පහසු වෙන්න, අනාගතයේදී ඔයාටම මතක තියාගන්න පහසු වෙන්න Comments දාන්න.
- Settings Files Organize කරන්න: ඔයාගේ Project එක Production වලට Deploy කරද්දී Development වලට වඩා වෙනස් Settings අවශ්ය වෙනවා. ඒක නිසා
settings.py
File එකsettings/development.py
,settings/production.py
වගේ වෙනම Files වලට වෙන් කරන එක හොඳ පුරුද්දක්. - Version Control පාවිච්චි කරන්න: Git වගේ Version Control System එකක් පාවිච්චි කරලා ඔයාගේ Code එක track කරන එක අනිවාර්යයි.
අවසන් වශයෙන්... (Conclusion)
ඉතින් යාළුවනේ, මේ Tutorial එකෙන් අපි Django Web Framework එකට සාර්ථකව අතපොත් තැබුවා. අපි මොනවද ඉගෙන ගත්තේ?
- Django කියන්නේ මොකක්ද, ඒකේ “Batteries Included” philosophy එකේ වැදගත්කම.
- MVT Architecture එක කොහොමද වැඩ කරන්නේ කියලා.
- Virtual Environment එකක් හදාගෙන, Django Install කරන හැටි.
- Project එකක් සහ App එකක් හදාගෙන, Development Server එක run කරන හැටි.
- Views සහ URLs හදලා, අපේ පළමු Web Page එක Browser එකේ පෙන්වන හැටි.
- සාමාන්යයෙන් එන ගැටළු සහ ඒවාට විසඳුම්.
- Django Project එකක් Clean විදියට Maintain කරන්න Best Practices කීපයක්.
මේක Django ලෝකයේ මුල්ම පියවර විතරයි. තව ගොඩක් දේවල් තියෙනවා ඉගෙන ගන්න. උදාහරණයක් විදියට Models හදලා Database එක්ක වැඩ කරන හැටි, Templates පාවිච්චි කරලා Dynamic Pages හදන හැටි, Forms එක්ක වැඩ කරන හැටි වගේ දේවල්.
ඒත් මේ පදනම ඔයාට ඉස්සරහට යන්න ලොකු ශක්තියක් වෙයි කියලා මට විශ්වාසයි. මේක ඔයාගේ ඊළඟ Project එකට add කරන්න උත්සාහ කරන්න! එහෙමත් නැත්නම් තවත් පොඩි App එකක් හදලා මේකේ තියෙන concepts apply කරන්න උත්සාහ කරන්න.
ඔයාගේ අත්දැකීම් කොහොමද? මොනවා හරි ගැටළුවක් ආවද? පහලින් comment කරන්න! ඔබේ අදහස් සහ ප්රශ්න වලට උත්තර දෙන්න අපි සූදානම්. සුභ Django ගමනක්!