Flask-এ Blueprints ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনকে বিভিন্ন মডিউলে ভাগ করতে পারেন, যা বড় এবং জটিল অ্যাপ্লিকেশন ডিজাইন করার জন্য অত্যন্ত গুরুত্বপূর্ণ। Blueprints আপনাকে অ্যাপ্লিকেশনের রাউট, ভিউ এবং অন্যান্য কার্যকারিতা আলাদা আলাদা অংশে বিভক্ত করে মডুলার অ্যাপ্লিকেশন ডিজাইন করতে সাহায্য করে। এটি অ্যাপ্লিকেশন কোডকে পরিষ্কার, রিইউজেবল এবং স্কেলেবল রাখে, বিশেষ করে বড় প্রকল্পের ক্ষেত্রে।
Flask-এ Blueprint এর মাধ্যমে Large Application Design
যখন আপনার Flask অ্যাপ্লিকেশন বড় হয়, তখন একাধিক ব্লুপ্রিন্ট ব্যবহার করা প্রয়োজন হয়। প্রতিটি ব্লুপ্রিন্ট অ্যাপ্লিকেশনের একটি নির্দিষ্ট ফিচার বা অংশ (মডিউল) হ্যান্ডেল করতে পারে, যেমন হোম পেজ, ইউজার অ্যাকাউন্ট, অ্যাডমিন প্যানেল, ব্লগ, ইত্যাদি। এর মাধ্যমে আপনি কোডটি একত্রিত রাখতে পারেন, এবং একে অপরের সাথে কনফ্লিক্ট ছাড়াই কাজ করতে পারবেন।
Flask Large Application Design এ Blueprint ব্যবহারের স্ট্রাকচার
আপনার Flask অ্যাপ্লিকেশনের ফোল্ডার স্ট্রাকচার কিছুটা এরকম হবে:
flask_project/
├── app.py # প্রধান অ্যাপ্লিকেশন ফাইল
├── config.py # কনফিগারেশন ফাইল
├── home/ # হোম ব্লুপ্রিন্ট
│ ├── __init__.py # ব্লুপ্রিন্ট ইনিশিয়ালাইজেশন
│ ├── routes.py # হোম রাউট
│ └── templates/ # হোম টেমপ্লেট
├── user/ # ইউজার ব্লুপ্রিন্ট
│ ├── __init__.py # ব্লুপ্রিন্ট ইনিশিয়ালাইজেশন
│ ├── routes.py # ইউজার রাউট
│ └── templates/ # ইউজার টেমপ্লেট
├── admin/ # অ্যাডমিন ব্লুপ্রিন্ট
│ ├── __init__.py # ব্লুপ্রিন্ট ইনিশিয়ালাইজেশন
│ ├── routes.py # অ্যাডমিন রাউট
│ └── templates/ # অ্যাডমিন টেমপ্লেট
├── models/ # ডাটাবেস মডেলস
├── templates/ # শেয়ারড টেমপ্লেট
│ ├── layout.html # সাধারণ লেআউট
│ └── error.html # এরর পেজ
└── run.py # অ্যাপ্লিকেশন চালানোর স্ক্রিপ্ট
এখানে:
- home/: হোম পেজ সম্পর্কিত ফিচারগুলি থাকবে।
- user/: ইউজার প্রোফাইল এবং অ্যাকাউন্ট সম্পর্কিত ফিচারগুলি থাকবে।
- admin/: অ্যাডমিন প্যানেল সম্পর্কিত ফিচারগুলি থাকবে।
- models/: অ্যাপ্লিকেশনের ডাটাবেস মডেলস থাকবে।
- templates/: শেয়ারড টেমপ্লেট এবং সাধারণ টেমপ্লেট থাকবে।
১. Blueprint তৈরি এবং ব্যবহার
Step 1: home ব্লুপ্রিন্ট তৈরি
home/routes.py:
from flask import Blueprint, render_template
home_bp = Blueprint('home', __name__)
@home_bp.route("/")
def home():
return render_template("home.html")
home/__init__.py:
from .routes import home_bp
এখানে:
home_bp: হোম ব্লুপ্রিন্ট তৈরি করা হয়েছে, যা হোম পেজের রাউট এবং ভিউ ফাংশন ধারণ করে।
Step 2: user ব্লুপ্রিন্ট তৈরি
user/routes.py:
from flask import Blueprint, render_template
user_bp = Blueprint('user', __name__)
@user_bp.route("/profile")
def profile():
return render_template("profile.html")
user/__init__.py:
from .routes import user_bp
এখানে:
user_bp: ইউজার প্রোফাইল সম্পর্কিত রাউট এবং ভিউ ফাংশন ধারণ করে।
Step 3: admin ব্লুপ্রিন্ট তৈরি
admin/routes.py:
from flask import Blueprint, render_template
admin_bp = Blueprint('admin', __name__)
@admin_bp.route("/dashboard")
def dashboard():
return render_template("dashboard.html")
admin/__init__.py:
from .routes import admin_bp
এখানে:
admin_bp: অ্যাডমিন প্যানেল সম্পর্কিত রাউট এবং ভিউ ফাংশন ধারণ করে।
২. Blueprint রেজিস্টার করা
Flask অ্যাপ্লিকেশন ফাইলে ব্লুপ্রিন্টগুলো রেজিস্টার করতে হবে।
app.py:
from flask import Flask
from home import home_bp
from user import user_bp
from admin import admin_bp
app = Flask(__name__)
# ব্লুপ্রিন্ট রেজিস্টার করা
app.register_blueprint(home_bp)
app.register_blueprint(user_bp, url_prefix='/user')
app.register_blueprint(admin_bp, url_prefix='/admin')
if __name__ == "__main__":
app.run(debug=True)
এখানে:
url_prefix='/user': ইউজার ব্লুপ্রিন্টের জন্য/userপাথ অ্যাড করা হয়েছে, যাতে/user/profileURL পাওয়া যায়।url_prefix='/admin': অ্যাডমিন ব্লুপ্রিন্টের জন্য/adminপাথ অ্যাড করা হয়েছে, যাতে/admin/dashboardURL পাওয়া যায়।
৩. Flask Configuration
আপনি যদি অ্যাপ্লিকেশনের জন্য কনফিগারেশন ফাইল ব্যবহার করতে চান, তাহলে config.py ফাইল তৈরি করে কনফিগারেশন ভেরিয়েবলগুলো রাখতে পারেন।
config.py:
class Config:
SECRET_KEY = 'your_secret_key'
SQLALCHEMY_DATABASE_URI = 'sqlite:///app.db'
SQLALCHEMY_TRACK_MODIFICATIONS = False
class DevelopmentConfig(Config):
DEBUG = True
class ProductionConfig(Config):
DEBUG = False
এখানে:
Config: এটি সাধারণ কনফিগারেশন সেটিংস ধারণ করে।DevelopmentConfigএবংProductionConfig: পরিবেশ অনুসারে কনফিগারেশন ভেরিয়েবল সেট করা হয়েছে।
এটি app.py ফাইলে লোড করা হবে:
from config import DevelopmentConfig
app.config.from_object(DevelopmentConfig)
৪. HTML টেমপ্লেট তৈরি
Flask-এ ব্লুপ্রিন্ট ব্যবহার করার সময় প্রতিটি ব্লুপ্রিন্টের নিজস্ব HTML টেমপ্লেট থাকতে পারে, তবে শেয়ারড টেমপ্লেটও থাকতে পারে।
templates/home.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home Page</title>
</head>
<body>
<h1>Welcome to the Home Page</h1>
</body>
</html>
templates/profile.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>User Profile</title>
</head>
<body>
<h1>Welcome to the User Profile</h1>
</body>
</html>
templates/dashboard.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Admin Dashboard</title>
</head>
<body>
<h1>Welcome to the Admin Dashboard</h1>
</body>
</html>
Flask-এ Blueprints ব্যবহার করে আপনি একটি বড় অ্যাপ্লিকেশনকে অনেকগুলো ছোট ছোট মডিউলে ভাগ করতে পারেন। এটি আপনার কোডকে পরিষ্কার, রিইউজেবল এবং মডুলার রাখতে সাহায্য করে। বড় অ্যাপ্লিকেশনগুলোর জন্য এটি একটি ভালো পদ্ধতি, কারণ এতে আপনি বিভিন্ন ব্লুপ্রিন্টে ফিচারগুলো আলাদা করে রাখতে পারেন এবং একটি কেন্দ্রীয় অ্যাপ্লিকেশন ফাইলে সব ব্লুপ্রিন্ট রেজিস্টার করে পুরো অ্যাপ্লিকেশনটি পরিচালনা করতে পারেন। Flask Blueprints আপনার অ্যাপ্লিকেশনকে আরও স্কেলেবল এবং উন্নত করতে সাহায্য করে।
Read more