Django Web Development Sinhala Tutorial | First Project | MVT Architecture

Django Web Development Sinhala Tutorial | First Project | MVT Architecture

ආයුබෝවන් යාළුවනේ! අද අපි කතා කරන්න යන්නේ Python Web Development වලට අත පොවන හැටි ගැන. විශේෂයෙන්ම, අපි බලමු Django කියන සුපිරි Framework එක පාවිච්චි කරලා කොහොමද ලේසියෙන් Web Application එකක් හදාගන්නේ කියලා. ඔයා Python දන්නවා නම්, Web Development පැත්තට යන්න හිතන් ඉන්නවා නම්, මේ Guide එක ඔයාට ගොඩක් වැදගත් වෙයි.

අපි මේ Guide එකෙන් Django කියන්නේ මොකක්ද, ඒකේ තියෙන විශේෂ දේවල් මොනවද, අපේ පළමු Django Project එක සහ App එක හදාගන්නේ කොහොමද, ඒක Run කරලා බලන්නේ කොහොමද වගේ දේවල් පියවරෙන් පියවර කතා කරනවා. කලබල වෙන්න එපා, හැමදේම සිංහලෙන් පැහැදිලිව තියෙන නිසා ඔයාට ලේසියෙන්ම තේරේවි!

එහෙනම්, අපි පටන් ගමු!

1. Django කියන්නේ මොකක්ද? (What is Django?)

Django කියන්නේ Python වලින් ලියපු High-level Web Framework එකක්. ඒ කියන්නේ, Website සහ Web Application හදන්න උදව් වෙන Tools සහ Structures ගොඩක් එක තැනකට ගෙනල්ලා තියෙන Software එකක්. Django වලට තියෙන ලොකුම වාසියක් තමයි ඒකේ "batteries included" philosophy එක. ඒ කියන්නේ ඔයාට Web App එකක් හදන්න අවශ්‍ය මූලික දේවල් (Database Management, User Authentication, Admin Panel වගේ) මේක ඇතුලෙම තියෙනවා. ඒ නිසා, ඔයාට මුලින්ම ගොඩක් දේවල් වෙනම Install කරන්න යන්න ඕනේ නැහැ. වෙලාව ගොඩක් ඉතුරුයි!

Django වල විශේෂතා කිහිපයක්:

  • Rapid Development: ඉක්මනට Application හදන්න පුළුවන්.
  • Scalable: ඔයාගේ Project එක ලොකු වෙනකොට වුණත් හොඳින් වැඩ කරන්න පුළුවන් විදියට හදලා තියෙනවා.
  • Secure: Web Attacks (CSRF, XSS වගේ) වලින් ආරක්ෂා වෙන්න අවශ්‍ය Tools මේකේ තියෙනවා.
  • Versatile: Social Networks, CMS (Content Management Systems) වගේ ගොඩක් දේවල් හදන්න පුළුවන්.

2. MVT Architecture: Django's ගෘහ නිර්මාණ ශිල්පය (Django's Architecture)

සාමාන්‍යයෙන් Web Frameworks වල MVC (Model-View-Controller) architecture එක පාවිච්චි කරනවා. Django වල තියෙන්නේ ඒකට ටිකක් සමාන වුණත් වෙනස්ම විදියක MVT (Model-View-Template) architecture එකක්.

Template:

මේක තමයි User ට පේන Interface එක. HTML, CSS, JavaScript පාවිච්චි කරලා Web Page එකක් නිර්මාණය කරන්නේ Template එක ඇතුලේ. View එකෙන් එවන Data ටික මේ Template එකට දාලා ලස්සනට Web Page එකක් විදියට User ට පෙන්නන එක තමයි Template එකේ වැඩේ.

View:

මේක තමයි Business Logic එක තියෙන තැන. User කෙනෙක් Request එකක් (උදාහරණයක් විදියට Website එකක Page එකක් Load කරන්න) දුන්නම, ඒ Request එක Process කරලා, Model එකෙන් Data අරගෙන, Template එකට යවන්නේ View එකෙන්. සරලව කිව්වොත්, User ට පෙන්නන්න ඕනේ මොනවද කියලා තීරණය කරන්නේ View එකෙන්.

Model:

මේක තමයි Database එකත් එක්ක වැඩ කරන කොටස. ඔයාගේ Web Application එකේ Data Structure එක කොහොමද තියෙන්නේ, ඒ Data Save කරන්නේ කොහොමද, Update කරන්නේ කොහොමද වගේ දේවල් handle කරන්නේ Model එකෙන්. Django වලට තමන්ගේම ORM (Object-Relational Mapper) එකක් තියෙනවා. ඒ නිසා Database වල SQL Queries ලියන්න ඕනේ නැහැ. Python Code වලින්ම Database එක්ක වැඩ කරන්න පුළුවන්. හරිම ලේසියි!

Django වල Controller එකේ වැඩේ කරන්නේ Framework එක විසින්මයි, ඒක නිසා අපිට View එක සහ Template එක ගැන විතරක් හිතුවම ඇති.

3. Django Project එකක් පටන් ගමු! (Let's Start a Django Project!)

දැන් අපි බලමු කොහොමද Django Project එකක් හදාගෙන, ඒකට App එකක් එකතු කරලා, ඒක Run කරන්නේ කියලා.

3.1. මුලින්ම සෙට් කරගමු (Initial Setup):

ඔයාගේ Computer එකේ Python සහ pip Install කරලා තියෙන්න ඕනේ. නැත්නම්, Python Website එකට ගිහින් Download කරගන්න.

Virtual Environment එකක් හදාගමු:

මේක ගොඩක් වැදගත් Best Practice එකක්. ඔයාගේ Project එකට අවශ්‍ය Dependencies වෙනම තියාගන්න පුදවුනු Environment එකක්. අපි Terminal එක Open කරලා මේ Commands ටික Run කරමු:

# Project folder එකක් හදමු
mkdir my_django_project
cd my_django_project

# Virtual environment එකක් හදමු
python -m venv venv

# Virtual environment එක activate කරමු
# Windows වල නම්:
venv\Scripts\activate

# macOS/Linux වල නම්:
source venv/bin/activate

දැන් ඔයාගේ Terminal එකේ මුලට `(venv)` කියලා ආවොත්, Virtual Environment එක Activate වෙලා කියලා තේරුම් ගන්න පුළුවන්.

Django Install කරමු:

Virtual Environment එක Activate කරලා තියෙන නිසා, දැන් අපි Django Install කරමු:

pip install django

Install උනාද බලන්න `pip freeze` කියලා ගහලා බලන්න පුළුවන්. ඒකෙන් ඔයාගේ Environment එකේ Install කරලා තියෙන Libraries ටික පෙන්නනවා.

3.2. Project එකක් හදමු (`django-admin startproject`):

දැන් අපිට Project එකක් හදන්න පුළුවන්. `my_django_project` කියන Root Folder එක ඇතුලේ, අපි `my_website` කියලා Project එකක් හදමු.

(venv) C:\my_django_project> django-admin startproject my_website .
# නැත්නම්: django-admin startproject my_website

. එක දැම්මොත්, Project files ටික current directory එක ඇතුලෙම හැදෙනවා. නැත්නම්, `my_website` කියලා තව Folder එකක් හැදිලා ඒක ඇතුලේ Project files ටික හැදෙනවා. මේක පටලව ගන්න එපා. මම recommend කරන්නේ . එක දාලා, Project files ටික root folder එක ඇතුලෙම හදාගන්න එක.

දැන් ඔයාගේ Folder Structure එක මෙහෙම වෙයි:


my_django_project/
├── venv/
├── my_website/      # Project folder එක
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py  # Project settings
│   ├── urls.py      # Project-wide URL configurations
│   └── wsgi.py
└── manage.py        # Command-line utility for Django project
  • `manage.py`: මේක තමයි ඔයාගේ Django Project එකත් එක්ක වැඩ කරන්න තියෙන Main Script එක. Server එක Run කරන එක, Database Migrations කරන එක වගේ හැමදේටම මේක පාවිච්චි කරනවා.
  • `my_website/settings.py`: Project එකේ සියලුම Settings මේ File එකේ තියෙන්නේ. Database Settings, Installed Apps, Static files වගේ දේවල් මෙතන Configure කරනවා.
  • `my_website/urls.py`: Project එකේ Root URLs Configure කරන්නේ මෙතන. (උදා: `www.example.com/` කියන එකෙන් පටන් ගන්න URLs)

3.3. App එකක් හදමු (`python manage.py startapp`):

Django Project එකක් කියන්නේ Website එකේ මුළු Collection එක. App එකක් කියන්නේ ඒ Project එකේ තියෙන එකම Feature එකක්. උදාහරණයක් විදියට, Blog එකක් කරනවා නම්, `blog` කියලා App එකක්, User Management වලට `users` කියලා App එකක් හදාගන්න පුළුවන්. මේකෙන් Project එක Maintain කරන්න ලේසියි, වගේම Apps Reuse කරන්නත් පුළුවන්.

අපි `hello_app` කියලා App එකක් හදමු:

(venv) C:\my_django_project> python manage.py startapp hello_app

දැන් ඔයාගේ Folder Structure එකට `hello_app` කියලා අලුත් Folder එකක් එකතු වෙලා තියෙයි:


my_django_project/
├── venv/
├── my_website/
│   ├── ...
├── hello_app/       # අපේ අලුත් App එක
│   ├── migrations/
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py    # Database models
│   ├── tests.py
│   └── views.py     # App views (logic)
└── manage.py

App එක Register කරමු:

අපි හදපු App එක Django Project එකට පේන්න ඕනේ නම්, ඒක `settings.py` එකේ `INSTALLED_APPS` කියන List එකට එකතු කරන්න ඕනේ. `my_website/settings.py` File එක Open කරලා මේ විදියට වෙනස් කරන්න:

# my_website/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hello_app',  # අපේ අලුත් App එක එකතු කළා!
]

මෙන්න මේක තමයි ආරම්භක අයට ගොඩක් වෙලාවට අමතක වෙන තැනක්. App එක Register කරන්නේ නැත්නම්, Django එකට ඒක හොයාගන්න බැහැ.

4. අපේ පළමු Web Page එක! (Our First Web Page!)

දැන් අපි `hello_app` එක ඇතුලේ පොඩි Web Page එකක් හදලා බලමු.

4.1. View එකක් ලියමු (Writing a View):

`hello_app/views.py` File එක Open කරලා මේ Code එක එකතු කරන්න:

# hello_app/views.py

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

def home(request):
    return HttpResponse("<h1>ආයුබෝවන් Django ලෝකයට!</h1><p>මේ අපේ පළමු Django App එක.</p>")

මෙතන `home` කියලා Function එකක් තියෙනවා. මේක Request එකක් (User ගේ Browser එකෙන් එන ඉල්ලීමක්) අරගෙන, `HttpResponse` එකක් විදියට HTML Content එකක් ආපහු යවනවා. සරලයි නේද?

4.2. URL එකක් සෙට් කරමු (Setting up a URL):

අපි හදපු View එක User ට පේන්න නම්, ඒකට URL එකක් ඕනේ. අපි මුලින්ම `hello_app` Folder එක ඇතුලේ `urls.py` කියලා අලුත් File එකක් හදමු.

`hello_app/urls.py` (අලුතින් හදන්න):

# hello_app/urls.py

from django.urls import path
from . import views

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

මෙතන `path('', views.home, name='home')` කියන්නේ, Root URL එකට (එනම් `http://127.0.0.1:8000/hello/`) Request එකක් ආවම, `views.home` Function එක Call කරන්න කියලා. `name='home'` කියන්නේ මේ URL Pattern එකට අපි දුන්න නමක්. පස්සේ Templates වලදී මේ නම් පාවිච්චි කරන්න පුළුවන්.

දැන් අපි මේ `hello_app` එකේ URLs ටික Project එකේ Main URLs එකට සම්බන්ධ කරන්න ඕනේ. `my_website/urls.py` File එක Open කරලා මේ විදියට වෙනස් කරන්න:

`my_website/urls.py`:

# my_website/urls.py

from django.contrib import admin
from django.urls import path, include # include එක import කරන්න අමතක කරන්න එපා!

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

දැන් `http://127.0.0.1:8000/hello/` කියන URL එකට ගියාම අපේ `hello_app` එකේ `urls.py` File එක Load වෙලා, ඒක ඇතුලේ තියෙන `views.home` Function එකට Call වෙනවා. `include` කියන එකෙන් තමයි App එකක URLs Set එකක් Project එකට Add කරන්නේ.

4.3. Server එක දුවවමු! (`runserver`):

දැන් හැමදේම සෙට් කරලා තියෙන්නේ. අපි Server එක Run කරලා බලමු අපේ Web Page එක වැඩද කියලා.

(venv) C:\my_django_project> python manage.py runserver

මේ Command එක දුන්නම Terminal එකේ Message ටිකක් පෙන්වයි. අන්තිමට `Starting development server at http://127.0.0.1:8000/` වගේ එකක් පෙන්වයි.

දැන් ඔයාට පුළුවන් Browser එක Open කරලා `http://127.0.0.1:8000/hello/` කියන URL එකට යන්න. එතකොට ඔයාට "ආයුබෝවන් Django ලෝකයට! මේ අපේ පළමු Django App එක." කියලා ලස්සනට පේන්න ඕනේ!

සුභ පැතුම්! ඔයා සාර්ථකව ඔයාගේ පළමු Django Web Page එක හදාගත්තා!

5. පොදු ගැටළු සහ හොඳම පුරුදු (Common Issues & Best Practices)

5.1. Initial setup errors:

  • `ModuleNotFoundError: No module named 'django'`: මේක එන්නේ ඔයා Django Install කරලා නැත්නම්, නැත්නම් වැරදි Virtual Environment එකක වැඩ කරනවා නම්. `pip install django` කියලා ගහලා බලන්න, ඒ වගේම `venv` එක Activate කරලා තියෙනවද කියලා බලන්න.
  • App not registered in `settings.py`: App එකක් හදලා `INSTALLED_APPS` ලිස්ට් එකට එකතු කරන්න අමතක වුණොත් Django එකට ඔයාගේ App එක හොයාගන්න බැහැ. එතකොට Error එකක් එයි.
  • URL configuration issues: `include` එක Import කරලා නැත්නම්, නැත්නම් `urlpatterns` ලිස්ට් එකේ Path එකක් වැරදි නම්, Page එක Load වෙන්නේ නැහැ, නැත්නම් `404 Not Found` Error එකක් එයි. Terminal එකේ Error Message එක හොඳට බලන්න.
  • `manage.py` file not found: මේක එන්නේ ඔයා `manage.py` File එක තියෙන Directory එකේ ඉඳන් Command එක Run කරන්නේ නැත්නම්. `cd my_django_project` කියලා ගහලා හරි Directory එකට ගිහින් Command Run කරන්න.

5.2. Project vs. App:

මේක තමයි Django වල වැඩ කරනකොට මුලින්ම ගොඩක් අයට පටලව ගන්න තැනක්. මතක තියාගන්න:

  • Project: ඔයාගේ මුළු Website එක, Project එකේ Settings (Database, overall URLs) තියෙන්නේ Project එකේ.
  • App: Project එක ඇතුලේ තියෙන එක Feature එකක් (Blog, Users, Payments වගේ). App එකක් හදන්නේ `python manage.py startapp` වලින්. Project එකක් හදන්නේ `django-admin startproject` වලින්.

5.3. Best Practices:

  • Virtual Environments පාවිච්චි කරන්න: හැම Project එකකටම වෙනම Virtual Environment එකක් පාවිච්චි කරන්න පුරුදු වෙන්න. මේකෙන් Project අතර Dependencies clashes වෙන එක වළක්වනවා.
  • Apps Reusable කරන්න: ඔයා හදන Apps පුළුවන් තරම් වෙනම තියාගන්න. ඒ කියන්නේ, App එකකට අදාල Code ටික ඒ App එක ඇතුලෙම තියාගන්න. එතකොට ඒ App එක වෙන Project එකකටත් පාවිච්චි කරන්න පුළුවන්.
  • Clear Naming Conventions: Variables, Functions, Class වලට පැහැදිලි නම් දෙන්න. ඒක Code එක කියවන්න සහ තේරුම් ගන්න ලේසියි.
  • Database Migrations ගැන දැනගන්න: අපි තවම Database එකක් එක්ක වැඩ කලේ නැති වුණාට, Models හදනකොට `python manage.py makemigrations` සහ `python manage.py migrate` Commands ගොඩක් වැදගත්. මේකෙන් ඔයාගේ Database Schema එක Manage කරන්න පුළුවන්.

HTML Templates වෙනම තියාගන්න: අපි මේ Guide එකේදී `HttpResponse` එක ඇතුලෙම HTML ලිව්වාට, සාමාන්‍යයෙන් Django Application වල HTML Code ලියන්නේ වෙනම Templates Files වල. `hello_app` Folder එක ඇතුලේ `templates` කියලා Folder එකක් හදලා, ඒක ඇතුලේ `hello_app` කියලා තව Folder එකක් හදලා, `index.html` වගේ File එකක් හදලා ඒක ඇතුලේ HTML ලියන එක තමයි Standard Practice එක.


hello_app/
├── ...
├── templates/
│   └── hello_app/
│       └── index.html
├── views.py
└── urls.py
        

දැන් `views.py` එකේදී `render` Function එක පාවිච්චි කරලා Template එක Load කරන්න පුළුවන්:

# hello_app/views.py

from django.shortcuts import render # render import කරන්න
# from django.http import HttpResponse # දැන් මේක ඕනේ නැහැ

def home(request):
    return render(request, 'hello_app/index.html', {'name': 'Django Developer'})

`index.html` එක ඇතුලේ `{{ name }}` කියලා පාවිච්චි කරලා View එකෙන් එවන `name` Value එක Display කරන්න පුළුවන්.

නිගමනය (Conclusion)

හරි, යාළුවනේ! මේ Guide එකෙන් ඔයාට Django කියන්නේ මොකක්ද, ඒකේ තියෙන MVT Architecture එක, Project එකක් සහ App එකක් හදාගන්නේ කොහොමද, ඒ වගේම ඔයාගේ පළමු Web Page එක Server එකේ Run කරලා බලන්නේ කොහොමද කියලා පැහැදිලි අවබෝධයක් ලැබෙන්න ඇති කියලා මම හිතනවා.

Django කියන්නේ Web Development වලට Super Power එකක් වගේ. ඒකේ "batteries included" philosophy එක නිසා ඉක්මනට සහ පහසුවෙන් Web Applications හදන්න පුළුවන්. අද අපි කරපු දේවල් පාවිච්චි කරලා ඔයාට පුළුවන් Basic Django Application එකක් Build කරන්න.

මේක ආරම්භයක් විතරයි! Django වල ඉගෙනගන්න ගොඩක් දේවල් තව තියෙනවා: Models (Database එක්ක වැඩ කරන හැටි), Templates (ලස්සන Web Pages හදන හැටි), Forms, Admin Panel එක Customize කරන හැටි වගේ ගොඩක් දේවල්. දිගටම Practice කරන්න. අලුත් දේවල් හදලා බලන්න.

ඔයාගේ පළමු Django Project එක හදනකොට මොනවහරි ප්‍රශ්න ආවද? එහෙම නැත්නම් මේ Tutorial එක ගැන ඔයාගේ අදහස් මොනවද කියලා පහළින් Comment කරන්න. අපි ඒ ගැන කතා කරමු!

ඉදිරියටත් මේ වගේ තවත් Guides එක්ක මුණගැහෙමු!