ශිෂ්ය සහ ගුරු උපකරණ පුවරු සහිත සම්පූර්ණ e-learning වෙබ් අඩවියක් Django framework එක සමඟ නිර්මාණය කරමු.
මෙම නිබන්ධනය මගින්, e-learning platform එකක් නිර්මාණය කරන්නේ කෙසේදැයි පියවරෙන් පියවර කියාදෙනු ලැබේ. Django යනු වේගවත්, ආරක්ෂිත, සහ පරිමාණ කළ හැකි වෙබ් යෙදුම් නිර්මාණය සඳහා ඇති "batteries-included" Python framework එකකි. අපි Django හි built-in SQLite database සහාය භාවිතා කරමු.
පළමුව, 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',
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
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
]
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 %}
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) සෑදීම පමණක් අවශ්ය වේ.
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/ වෙත පිවිසීමෙන් ඔබට දත්ත කළමනාකරණය කළ හැක.
මෙම නිබන්ධනය මගින් Django e-learning වෙබ් අඩවියක මූලික රාමුවක් ලබා දේ. Django හි ඇති බලවත් features භාවිතා කර මෙය තවදුරටත් දියුණු කළ හැක.
ModelForm භාවිතා කිරීම.