Python, Django සහ SQLite E-Learning වෙබ් අඩවිය

ශිෂ්‍ය සහ ගුරු උපකරණ පුවරු සහිත සම්පූර්ණ e-learning වෙබ් අඩවියක් Django framework එක සමඟ නිර්මාණය කරමු.

1. හැඳින්වීම (Introduction)

මෙම නිබන්ධනය මගින්, e-learning platform එකක් නිර්මාණය කරන්නේ කෙසේදැයි පියවරෙන් පියවර කියාදෙනු ලැබේ. Django යනු වේගවත්, ආරක්ෂිත, සහ පරිමාණ කළ හැකි වෙබ් යෙදුම් නිර්මාණය සඳහා ඇති "batteries-included" Python framework එකකි. අපි Django හි built-in SQLite database සහාය භාවිතා කරමු.

Django හි ප්‍රධාන වාසි:
  • ORM (Object-Relational Mapper): SQL කේත ලිවීමකින් තොරව Python objects හරහා දත්ත සමුදාය කළමනාකරණය.
  • Built-in Admin Panel: දත්ත කළමනාකරණය සඳහා ස්වයංක්‍රීයව ජනනය වන පරිපාලක අතුරුමුහුණතක්.
  • Security: SQL injection, XSS වැනි ප්‍රහාර වලින් ආරක්ෂා වීමට built-in features.
  • Authentication System: පරිශීලක කළමනාකරණය සඳහා සම්පූර්ණ පද්ධතියක්.

2. ව්‍යාපෘති සැකසුම (Project Setup)

පළමුව, Django ව්‍යාපෘතියක් ආරම්භ කර අවශ්‍ය සැකසුම් කරගනිමු.

1. Python සහ pip ස්ථාපනය කර ඇති බවට වග බලා ගන්න. ඉන්පසු Django ස්ථාපනය කරන්න:

pip install django

2. නව Django ව්‍යාපෘතියක් සාදන්න:

django-admin startproject elearning_project

3. ව්‍යාපෘති ෆෝල්ඩරයට පිවිස නව app එකක් සාදන්න:

cd elearning_project
python manage.py startapp core

4. elearning_project/settings.py ගොනුවට ගොස් INSTALLED_APPS ලැයිස්තුවට අපගේ නව app එක එක් කරන්න: 'core',

3. Models සහ Database

Django හිදී, අපි SQL වෙනුවට Python classes (Models) ලෙස දත්ත සමුදා වගු අර්ථ දක්වමු.

core/models.py

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    USER_TYPE_CHOICES = (
        ("student", "Student"),
        ("teacher", "Teacher"),
    )
    user_type = models.CharField(max_length=10, choices=USER_TYPE_CHOICES, default="student")

class Lesson(models.Model):
    teacher = models.ForeignKey(User, on_delete=models.CASCADE, limit_choices_to={'user_type': 'teacher'})
    title = models.CharField(max_length=200)
    content = models.TextField()

    def __str__(self):
        return self.title

settings.py ගොනුවේ AUTH_USER_MODEL = 'core.User' ලෙස එක් කරන්න.

දැන්, මෙම models දත්ත සමුදායට එක් කිරීමට මෙම commands ක්‍රියාත්මක කරන්න:


python manage.py makemigrations
python manage.py migrate

4. URLs සහ Views

Views යනු පරිශීලක ඉල්ලීම් වලට ප්‍රතිචාර දක්වන functions හෝ classes වේ. URLs මගින් එම ඉල්ලීම් අදාළ view එකට යොමු කරයි.

core/views.py

from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required

def home_view(request):
    if request.user.is_authenticated:
        if request.user.user_type == 'student':
            return redirect('student_dashboard')
        else:
            return redirect('teacher_dashboard')
    return render(request, 'home.html')

@login_required
def student_dashboard_view(request):
    # Add logic to fetch lessons for the student
    return render(request, 'student_dashboard.html')

@login_required
def teacher_dashboard_view(request):
    # Add logic to fetch lessons created by the teacher
    return render(request, 'teacher_dashboard.html')
elearning_project/urls.py

from django.contrib import admin
from django.urls import path
from core import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home_view, name='home'),
    path('student/dashboard/', views.student_dashboard_view, name='student_dashboard'),
    path('teacher/dashboard/', views.teacher_dashboard_view, name='teacher_dashboard'),
    # Add login, logout, register URLs here
]

5. Templates සහ Forms

Templates යනු පරිශීලකයාට පෙනෙන HTML ගොනු වේ. Django template language භාවිතයෙන් dynamic දත්ත පෙන්විය හැක.

templates නමින් ෆෝල්ඩරයක් සාදා, එහි student_dashboard.html වැනි ගොනු සාදන්න.

templates/student_dashboard.html

{% extends "base.html" %}

{% block content %}
<div class="container">
    <h1>ආයුබෝවන්, {{ user.username }}!</h1>
    <p>මෙය ශිෂ්‍ය උපකරණ පුවරුවයි.</p>
    
    <h3>ඔබගේ පාඩම්</h3>
    <ul>
        {% for lesson in lessons %}
            <li>{{ lesson.title }}</li>
        {% empty %}
            <li>තවමත් පාඩම් නැත.</li>
        {% endfor %}
    </ul>
</div>
{% endblock %}

6. Authentication

Django හි built-in authentication system එක භාවිතා කිරීම ඉතා පහසුය.

elearning_project/urls.py (යාවත්කාලීන කිරීම)

from django.urls import path, include

urlpatterns = [
    # ... other urls
    path('accounts/', include('django.contrib.auth.urls')), # Adds login, logout, etc.
]

දැන් /accounts/login/, /accounts/logout/ වැනි URLs ස්වයංක්‍රීයව ක්‍රියාත්මක වේ. ඒවාට අදාළ templates (registration/login.html) සෑදීම පමණක් අවශ්‍ය වේ.

7. Django Admin Panel

Django හි ඇති ප්‍රබලම අංගයක් නම් ස්වයංක්‍රීය Admin Panel එකයි.

1. Superuser කෙනෙක් සාදන්න:

python manage.py createsuperuser

2. core/admin.py ගොනුවට අපගේ models register කරන්න:


from django.contrib import admin
from .models import User, Lesson

admin.site.register(User)
admin.site.register(Lesson)

දැන් server එක run කර (python manage.py runserver) /admin/ වෙත පිවිසීමෙන් ඔබට දත්ත කළමනාකරණය කළ හැක.

8. අවසාන සටහන් (Final Notes)

මෙම නිබන්ධනය මගින් Django e-learning වෙබ් අඩවියක මූලික රාමුවක් ලබා දේ. Django හි ඇති බලවත් features භාවිතා කර මෙය තවදුරටත් දියුණු කළ හැක.

වැඩිදුර දියුණු කිරීම්:
  • Django REST Framework: Mobile app එකක් සඳහා API එකක් නිර්මාණය කිරීම.
  • Custom Forms: ලියාපදිංචිය සඳහා ModelForm භාවිතා කිරීම.
  • Static & Media Files: CSS, JS, සහ පරිශීලකයන් upload කරන ගොනු (profile pictures) කළමනාකරණය.
  • වඩාත් සංකීර්ණ database queries සඳහා Django ORM හි ඇති features භාවිතා කිරීම.