Python Web Development: Flask & Django Introduction Sinhala Guide

ආරම්භයක්: Python සමඟ Web Development ලෝකයට පිවිසෙමු!
කොහොමද යාලුවනේ! අද අපි කතා කරන්න යන්නේ ඔයාලා හැමෝම ආස කරන මාතෘකාවක් ගැන. ඒ තමයි Python භාවිතයෙන් Web Development ආරම්භ කරන විදිහ. දැන් බලන්නකෝ, Facebook, YouTube, Instagram, Netflix වගේ ඔයාලා දිනපතා භාවිත කරන හැම Application එකක්ම, Web Site එකක්ම Web Development වලින් තමයි හැදිලා තියෙන්නේ. මේ හැමදේම පිටිපස්සේ තියෙන මැජික් එක තේරුම් ගන්න ඔයාලත් කැමති ඇතිනේ?
Python කියන්නේ Coding වලට අලුත් කෙනෙකුට වුණත් ඉක්මනින් ඉගෙන ගන්න පුළුවන්, සරල Programming Language එකක්. ඒක තමයි Web Development වලට Python මෙච්චර ජනප්රිය වෙන්න එක හේතුවක්. ඒ විතරක් නෙවෙයි, Machine Learning, Data Science වගේ ගොඩක් දේවල් වලටත් Python පාවිච්චි කරනවා.
Web Development වලදී අපිට මුල ඉඳන්ම හැමදේම හදන්න අවශ්ය වෙන්නේ නැහැ. ඒ වෙනුවට අපිට Web Frameworks පාවිච්චි කරන්න පුළුවන්. මේ Frameworks කියන්නේ අපේ වැඩේ පහසු කරන, කලින් හදලා තියෙන මෙවලම් (Tools) සහ නීති (Guidelines) ගොඩකට. අද අපි Python Web Development වලදී වැඩිපුරම භාවිත කරන Frameworks දෙකක් ගැන කතා කරනවා. ඒ තමයි Flask සහ Django.
මේ Blog Post එකෙන් අපි පහත දේවල් ගැන විස්තරාත්මකව ඉගෙන ගනිමු:
- Web Frameworks කියන්නේ මොනවාද සහ ඒවා වැදගත් වෙන්නේ ඇයි?
- Request-Response Cycle එක ක්රියා කරන ආකාරය.
- MVC/MVT Patterns ගැන සරල පැහැදිලි කිරීමක්.
- Flask සහ Django ස්ථාපනය කරලා, ඉතාම සරල “Hello, Web!” Application එකක් හදාගන්න විදිහ.
- සාමාන්යයෙන් එන ගැටළු සහ ඒවාට විසඳුම්.
- Web Development වලදී අනුගමනය කළ යුතු හොඳම පුරුදු (Best Practices).
එහෙනම්, අපි පටන් ගමු!
Web Frameworks සහ ඒවායේ වැදගත්කම
හිතන්නකෝ, ඔයාලා ගෙදර උත්සවයකට කේක් එකක් හදන්න යනවා කියලා. මුලින්ම පිටි ටික හදලා, බිත්තර හොයලා, සීනි හදලා, බේකින් පවුඩර් හදලා… ඒ හැමදේම මුල ඉඳන්ම කරන්න ඕන වුණා නම් කොච්චර වෙලාවක් යයිද? ඒ වෙනුවට අපි කඩෙන් අරගෙන එනවා පිටි, සීනි, බිත්තර, බේකින් පවුඩර් වගේ දේවල්. ඒ අමුද්රව්ය ටික පාවිච්චි කරලා ඉක්මනින් කේක් එක හදාගන්න පුළුවන්.
Web Frameworks කියන්නෙත් හරියට මේ කේක් අමුද්රව්ය වගේ දෙයක්. Web Application එකක් හදද්දි අපිට අවශ්ය වෙන පොදු කාර්යයන් (Common functionalities) ගොඩක් ඒ Frameworks වල කලින් හදලා තියෙනවා. උදාහරණයක් විදිහට, Database එක්ක වැඩ කරන එක, URL Routing, Security වගේ දේවල් Frameworks වලින් පහසු කරනවා.
Web Frameworks භාවිත කිරීමේ වාසි:
- කාලය ඉතිරි කිරීම (Time Saving): කලින් හදලා තියෙන Code Re-use කරන්න පුළුවන් නිසා ඉක්මනින් Application එකක් හදන්න පුළුවන්.
- ආරක්ෂාව (Security): Frameworks වල ආරක්ෂක විශේෂාංග (Security Features) ගොඩක් තියෙනවා. (Ex: CSRF Protection).
- සංවිධානය (Organization): Application එකේ Code එක පිළිවෙලකට තියාගන්න Frameworks වල Structural Guidelines තියෙනවා.
- නඩත්තුව පහසු කිරීම (Easier Maintenance): Standardized code නිසා පස්සේ Application එක වෙනස් කරන්න හෝ අලුත් Features එකතු කරන්න පහසුයි.
Flask vs. Django: කෙටි සැසඳීමක්
Python වල ජනප්රියම Web Frameworks දෙක තමයි Flask සහ Django. මේ දෙකම හොඳ Frameworks වුණත්, ඒවා එකිනෙකට වෙනස් විදිහට භාවිත කරනවා.
- Flask:
- Microframework: Flask කියන්නේ ‘Microframework’ එකක්. ඒ කියන්නේ ඒක ගොඩක් සරලයි, කුඩා ප්රමාණයේ Application හදන්න සහ ඉක්මනින් Prototype එකක් හදන්න හොඳයි.
- නම්යශීලී බව (Flexibility): Flask වල තියෙන්නේ Core functionalities ටික විතරයි. ඒ නිසා ඔයාට අවශ්ය විදිහට අමතර Library එකතු කරගන්න පුළුවන්. වැඩේට අවශ්ය දේවල් විතරක් පාවිච්චි කරන්න පුළුවන්.
- සරල බව (Simplicity): අලුතෙන් Web Development ඉගෙන ගන්න කෙනෙකුට Flask හොඳ ආරම්භයක්.
- Django:
- “Batteries Included”: Django කියන්නේ “Batteries Included” Framework එකක්. ඒ කියන්නේ ඒකේ Web Development වලට අවශ්ය හැමදේම වගේ කලින්ම ඇතුළත් වෙලා තියෙනවා. (Ex: ORM – Object-Relational Mapper, Admin Panel, Authentication System).
- වේගවත් සංවර්ධනය (Rapid Development): විශාල හා සංකීර්ණ Application ඉක්මනින් සංවර්ධනය කරන්න Django හොඳයි.
- පූර්ණ විසඳුමක් (Full-fledged Solution): Django කියන්නේ විශාල ව්යාපෘති (Large-scale projects) වලට සුදුසු, සවිස්තරාත්මක විසඳුමක්.
සරලවම කියනවා නම්, ඔයා පොඩි Project එකක් කරනවා නම්, හෝ Framework එකක වැඩ කරන හැටි ඉගෙන ගන්නවා නම්, Flask හොඳයි. ඔයාට ඉක්මනින් විශාල, සංකීර්ණ Web Application එකක් හදන්න අවශ්ය නම්, Django හොඳයි.
Request-Response Cycle එක ක්රියා කරන ආකාරය
Web Application එකක් වැඩ කරන්නේ කොහොමද කියලා තේරුම් ගන්න, Request-Response Cycle එක ගැන දැනගෙන ඉන්න එක වැදගත්.
- Request (ඉල්ලීම): ඔයාගේ Web Browser එකෙන් (Ex: Chrome, Firefox) Web Site එකකට යනවා කියමු. (Ex:
www.example.com
). මේක තමයි Browser එකෙන් Server එකට යවන ‘Request’ එක. - Server Processing (සැකසීම): Server එක මේ Request එක ලබාගෙන, ඔයා ඉල්ලපු දේට අනුව අවශ්ය දත්ත (Data) Database එකෙන් ගන්නවා, අවශ්ය ගණනය කිරීම් (Calculations) කරනවා, සහ Dynamic Content හදනවා. මේ වැඩේට තමයි අපේ Python Web Framework (Flask/Django) එක උදව් වෙන්නේ.
- Response (ප්රතිචාරය): Server එක, මේ සැකසූ දත්ත Web Page එකක් විදිහට හදලා, Web Browser එකට ආපහු යවනවා. මේක තමයි ‘Response’ එක.
- Browser Rendering (පෙන්වීම): Web Browser එක, Server එකෙන් ලැබුණු Response එක (HTML, CSS, JavaScript) භාවිත කරලා, ඔයාට Web Page එකක් විදිහට තිරය මත පෙන්වනවා.
මේ චක්රය තමයි හැම Web Application එකක්ම පිටිපස්සේ ක්රියාත්මක වෙන්නේ.
MVC/MVT Patterns: දේවල් සංවිධානය කරමු
Web Application එකක Code එක වැඩි වෙනකොට, ඒක පිළිවෙලකට තියාගන්න එක අත්යවශ්යයි. ඒකට තමයි MVC (Model-View-Controller) සහ MVT (Model-View-Template) වගේ Architectural Patterns පාවිච්චි කරන්නේ.
MVC (Model-View-Controller)
මේක ගොඩක් Frameworks වල භාවිත කරන පොදු Pattern එකක්. ඒක කොටස් තුනකට බෙදෙනවා:
- Model: Application එකේ Data වලට අදාළ දේවල් මේකෙන් handle කරනවා. Database එකක් එක්ක සම්බන්ධ වෙන්නේ මෙතනින්. (Ex: Users, Products වගේ දේවල් වල Data).
- View: User ට පේන User Interface (UI) එක මේකෙන් නිරූපණය කරනවා. Web Page එකේ HTML, CSS වගේ දේවල් මේකට අයිති වෙනවා.
- Controller: Model සහ View අතර සම්බන්ධය පවත්වාගෙන යනවා. User ගේ Request එක ලබාගෙන, ඒක Model එකට යවලා අවශ්ය Data අරගෙන, ඒ Data View එකට යවලා User ට පෙන්වන්න සලස්වනවා.
MVT (Model-View-Template) - Django විශේෂිතයි
Django Framework එකේදී MVC වලට සමාන MVT Pattern එකක් භාවිත කරනවා.
- Model: MVC එකේ Model වගේම, Application එකේ Data සහ Database එක එක්ක සම්බන්ධතා handle කරනවා.
- View: Django වල View කියන්නේ Controller වගේ වැඩ කරන කොටසට. ඒක Request එක ලබාගෙන, අවශ්ය Logic එක ක්රියාත්මක කරලා, Data ටික Template එකට යවනවා.
- Template: MVC එකේ View වගේම, User ට පේන HTML Structure එක මේකෙන් හදනවා. Dynamic Data පෙන්වන්න Templates පාවිච්චි කරනවා.
මේ Patterns භාවිත කිරීමෙන්, ඔයාගේ Code එක කොටස් වලට බෙදිලා, වැඩ කරන්න සහ නඩත්තු කරන්න පහසු වෙනවා.
ඔබේ පළමු "Hello, Web!" App එක
දැන් අපි බලමු Flask සහ Django භාවිතයෙන් ඉතාම සරල Web Application එකක් හදාගන්නේ කොහොමද කියලා. මේකෙන් ඔයාලට මේ Frameworks දෙකේම ආරම්භක ක්රියාකාරීත්වය ගැන හොඳ අවබෝධයක් ලැබෙයි.
Flask සමඟ ආරම්භ කරමු
Flask කියන්නේ Microframework එකක් නිසා, පොඩි Application එකක් හදන්න Code ගොඩක් ලියන්න අවශ්ය නැහැ.
1. Flask ස්ථාපනය කරමු:
මුලින්ම ඔයාගේ Terminal/Command Prompt එක Open කරලා, පහත Command එක ටයිප් කරන්න. Virtual Environment එකක් (Python Project එකකටම අදාළව Packages manage කරන්න) පාවිච්චි කරන එක හොඳ පුරුද්දක්. හැබැයි මේ ආරම්භක අයට තේරුම් ගන්න අපි ඒක දැන්ම අවශ්ය කරන්නේ නැහැ. නමුත් හොඳම පුරුද්දක් විදිහට ඒක දැනගෙන ඉන්න.
pip install Flask
2. Python File එකක් හදමු:
ඔයාගේ කැමති Folder එකක් ඇතුළේ app.py
කියලා File එකක් හදන්න. මේ File එක ඇතුළට පහත Code එක Copy කරන්න.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Web! මම Flask Application එකක්!'
@app.route('/about')
def about():
return '<h2>මේක මගේ පළමු Flask Web Page එක.</h2><p>මම Web Development ඉගෙන ගන්නවා.</p>'
if __name__ == '__main__':
app.run(debug=True)
Code එක පැහැදිලි කිරීම:
from flask import Flask
: Flask Library එක Import කරනවා.app = Flask(__name__)
: Flask Application එකක් Instance කරනවා.@app.route('/')
: මේක Decorator එකක්. ඒ කියන්නේ Browser එකේ Root URL (/
) එකට ආවොත්,hello_world()
Function එක ක්රියාත්මක වෙනවා.def hello_world():
: මේ Function එකෙන් User ට පෙන්වන්න ඕන HTML Content එක Return කරනවා.@app.route('/about')
:/about
කියන URL එකට ආවොත්about()
Function එක ක්රියාත්මක වෙනවා.if __name__ == '__main__':
: මේක Python වල standard practice එකක්. මේ File එක Direct Run කරනවා නම් විතරක්app.run()
ක්රියාත්මක වෙනවා.app.run(debug=True)
: Flask Application එක Start කරනවා.debug=True
නිසා Development එකේදී වැරදි (Errors) පහසුවෙන් බලාගන්න පුළුවන්.
3. Application එක Run කරමු:
Terminal එකට ගිහින්, ඔයා app.py
File එක හදපු Folder එකට ගිහින් (cd your_folder_path
), පහත Command එක ටයිප් කරන්න.
python app.py
දැන් ඔයාට Terminal එකේ URL එකක් පෙනෙයි. සාමාන්යයෙන් ඒක http://127.0.0.1:5000/
වගේ එකක්. ඒ URL එක Browser එකේ Open කරලා බලන්න. ඔයාගේ “Hello, Web!” Message එක පෙනෙයි.
http://127.0.0.1:5000/about
කියන URL එකටත් ගිහින් බලන්න.
Django සමඟ ආරම්භ කරමු
Django විශාල Framework එකක් නිසා, Project Structure එක ටිකක් වෙනස්. Django Application එකක් Project එකක් ඇතුළේ Apps කිහිපයකින් සමන්විත වෙන්න පුළුවන්.
1. Django ස්ථාපනය කරමු:
Terminal එකේ පහත Command එක ටයිප් කරන්න.
pip install Django
2. Django Project එකක් හදමු:
ඔයාගේ කැමති Folder එකක් ඇතුළේ පහත Command එක ටයිප් කරන්න. මේකෙන් myproject
කියලා Folder එකක් ඇතුළේ Django Project එකක් හැදෙනවා.
django-admin startproject myproject .
(.
එකෙන් කියන්නේ මේ Folder එක ඇතුලෙම Project එක හදන්න කියන එක. නැත්නම් myproject/myproject
වගේ Nest වෙනවා).
3. Django App එකක් හදමු:
දැන් myproject
Folder එක ඇතුළට ගිහින් (cd myproject
), පහත Command එක ටයිප් කරන්න. මේකෙන් myapp
කියලා Django App එකක් හැදෙනවා.
python manage.py startapp myapp
4. App එක Project එකට Register කරමු:
myproject/settings.py
File එක Open කරලා, INSTALLED_APPS
කියන List එකට 'myapp',
කියලා එකතු කරන්න. ඒක මේ වගේ පෙනෙන්න ඕන:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # මේක තමයි අලුතින් එකතු කළේ
]
5. View එකක් හදමු:
myapp
Folder එක ඇතුළේ තියෙන views.py
File එක Open කරලා, පහත Code එක එකතු කරන්න:
from django.shortcuts import render
from django.http import HttpResponse
def hello_django(request):
return HttpResponse("<h1>Hello, Web! මම Django Application එකක්!</h1>")
6. URL Routing සකසමු:
මුලින්ම, myapp
Folder එක ඇතුළේ urls.py
කියලා අලුත් File එකක් හදන්න. ඒ File එක ඇතුළට පහත Code එක Copy කරන්න:
from django.urls import path
from . import views
urlpatterns = [
path('', views.hello_django, name='hello_django'),
]
දැන් Project එකේ Main urls.py
File එකට (myproject/myproject/urls.py
) ගිහින්, ඔයාගේ myapp
එකේ URL ටික ඇතුළත් කරන්න:
from django.contrib import admin
from django.urls import path, include # 'include' එකතු කරන්න
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapp.urls')), # මේක අලුතින් එකතු කළා
]
7. Application එක Run කරමු:
Terminal එකේ, ඔයා manage.py
File එක තියෙන Folder එකේ ඉඳන් (myproject
Folder එක ඇතුළේ), පහත Command එක ටයිප් කරන්න:
python manage.py runserver
දැන් ඔයාට Terminal එකේ http://127.0.0.1:8000/
වගේ URL එකක් පෙනෙයි. ඒක Browser එකේ Open කරලා බලන්න. ඔයාගේ “Hello, Web!” Message එක පෙනෙයි.
සාමාන්ය ගැටළු සහ විසඳුම්
අලුතෙන් Programming කරද්දී පොඩි පොඩි ගැටළු එන එක සාමාන්ය දෙයක්. ඒවාට බය වෙන්න එපා! ඒවා විසඳන හැටි ඉගෙන ගන්න එකත් Programming වල කොටසක්.
1. Installation Issues (pip
not found, Permissions)
pip
not found: Python Install කරද්දීAdd Python to PATH
කියන Option එක Select නොකර ඉන්න ඇති. නැත්නම් Python හරියට Install වෙලා නැති වෙන්න පුළුවන්. Python අයින් කරලා ආයෙත් Install කරන්න, හරිpip
Path එකට Add කරන්න.- Permissions Error: සමහර වෙලාවට Packages Install කරන්න Admin Permissions ඕන වෙන්න පුළුවන්. Command Prompt/Terminal එක Administrator විදිහට Open කරලා Try කරන්න. නැත්නම්
--user
Flag එක පාවිච්චි කරන්න:pip install Flask --user
.
2. Port Conflicts (Address already in use)
ඔයා Flask හෝ Django Application එක Run කරද්දී Address already in use
වගේ Error එකක් ආවොත්, ඒ කියන්නේ ඔයාගේ Computer එකේ වෙන Application එකක් දැනටමත් ඒ Port එක (Ex: Flask වලට 5000, Django වලට 8000) භාවිත කරනවා කියන එකයි. විසඳුම්:
- දැනට Run වෙන Process එක නවත්වන්න: ඔයා කලින් Run කරපු App එකක් තාම Background එකේ Run වෙනවා වෙන්න පුළුවන්. ඒක නවත්වන්න.
- වෙන Port එකක් භාවිත කරන්න: Flask වල නම්
app.run(debug=True, port=5001)
වගේ දෙන්න පුළුවන්. Django වල නම්python manage.py runserver 8001
වගේ Command එක දෙන්න පුළුවන්.
3. Virtual Environments (venv
/virtualenv
)
මේක ගැටළුවක් නෙවෙයි, හැබැයි හොඳම පුරුද්දක්. ඔයාට Python Project ගොඩක් තියෙනවා නම්, එක Project එකකට අවශ්ය Packages එකිනෙකට ගැටීම වලක්වා ගන්න Virtual Environments පාවිච්චි කරන්න ඕන.
Virtual Environment එකක් හදන විදිහ:
# Project Folder එකට යන්න
cd my_flask_project
# Virtual Environment එක හදන්න
python -m venv venv
# Activate කරන්න
# Windows:
.\venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# දැන් Packages install කරන්න
pip install Flask
මේක කළාම ඔයාගේ Terminal එකේ Line එකේ ඉස්සරහින් (venv)
කියලා පෙනෙයි. වැඩේ ඉවර වුණාම deactivate
කියලා ටයිප් කරලා Virtual Environment එකෙන් එලියට එන්න.
හොඳම පුරුදු සහ ඊළඟ පියවර
Web Development කියන්නේ ලොකු ගමනක්. මේ ආරම්භය විතරයි. මේ ගමන සාර්ථක කරගන්න පහත හොඳම පුරුදු අනුගමනය කරන්න:
- Core Concepts තේරුම් ගන්න: ඉක්මනටම සංකීර්ණ දේවල් වලට යන්න කලින්, Request-Response Cycle, Routing, Templates වගේ මූලික සංකල්ප හොඳින් තේරුම් ගන්න.
- Documentation කියවන්න: Flask, Django දෙකේම විශාල හා හොඳින් ලියවූ Documentation තියෙනවා. මොකක් හරි ගැටළුවක් ආවොත් හෝ අලුත් Feature එකක් ගැන දැනගන්න ඕන නම්, මුලින්ම ඒකේ Official Documentation එක කියවන්න.
- නිරන්තරයෙන් පුහුණු වන්න: Coding කියන්නේ ඉගෙන ගන්නවාට වඩා කරන්න ඕන දෙයක්. පොඩි පොඩි Projects හදන්න. අලුත් Features එකතු කරන්න Try කරන්න.
- Git සහ Version Control ඉගෙන ගන්න: ඔයා කරන Projects වල Code Changes Manage කරන්න Git වගේ Version Control System එකක් ඉගෙන ගන්න එක අනිවාර්යයි.
- Frontend Technologies ඉගෙන ගන්න: HTML, CSS, JavaScript කියන්නේ Web Development වලට අත්යවශ්ය දේවල්. මේ Frameworks එක්ක ඒවා කොහොමද පාවිච්චි කරන්නේ කියලා ඉගෙන ගන්න.
- Community එකත් එක්ක සම්බන්ධ වෙන්න: Online Forums, Discord Servers, Stack Overflow වගේ තැන් වලට සම්බන්ධ වෙලා ප්රශ්න අහන්න, උදව් කරන්න.
Flask සහ Django කියන්නේ Python වලින් Web Development කරන අයට තියෙන විශාල අවස්ථා දෙකක්. තව ගොඩක් දේවල් මේවා ඇතුළේ ඉගෙන ගන්න තියෙනවා. (Ex: Databases, User Authentication, Forms, API Development, Deployment).
අවසන් වශයෙන්
අද අපි Python Web Development ලෝකයට හොඳ ආරම්භයක් ගත්තා. Flask සහ Django කියන ප්රධාන Frameworks දෙක ගැන, ඒවායේ වෙනස්කම් ගැන, Request-Response Cycle එක ගැන, සහ MVC/MVT Patterns ගැන අපි ඉගෙන ගත්තා. ඒ වගේම ඔයාලගේ පළමු “Hello, Web!” Application එක හදාගන්නත් අපි කටයුතු කළා.
මතක තියාගන්න, Programming කියන්නේ අඛණ්ඩ ඉගෙනීමේ ක්රියාවලියක්. වැරදි එනවා, ඒත් ඒවා තමයි අපිට ඉගෙන ගන්න උදව් වෙන්නේ. මේ ලිපිය ඔයාලට Python Web Development ආරම්භ කරන්න හොඳ පදනමක් ලබා දුන්නා කියලා මම හිතනවා.
ඔයාගේ පළමු Web App එක හදන්න Flask ද Django ද තෝරා ගන්නේ? නැත්නම් ඒක හදන්න ඔයාගේ අදහස මොකක්ද? පහළින් Comment එකක් දාලා කියන්න. ඔයාලගේ අත්දැකීම් බෙදාගන්න අපි හැමෝම කැමතියි. මේ දැනුම භාවිත කරලා ඔයාලගේම Web Application හදන්න පටන් ගන්න! ජය වේවා!