Flask অ্যাপ্লিকেশনে Static Files ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ, কারণ সেগুলি ওয়েব পেজে উপস্থাপনার জন্য ব্যবহৃত হয়। Static files বলতে সাধারণত HTML পেজের সাথে যুক্ত CSS, JavaScript, এবং Images বোঝায়। Flask-এ এই ধরনের ফাইলগুলি একটি নির্দিষ্ট ফোল্ডারে সংরক্ষণ করা হয় এবং Flask স্বয়ংক্রিয়ভাবে সেগুলিকে সার্ভ করে থাকে।
Flask-এ Static Files ব্যবস্থাপনা
Flask-এ স্ট্যাটিক ফাইলের জন্য ডিফল্ট ফোল্ডার হলো static/। আপনি CSS, JavaScript, এবং ছবি ইত্যাদি এই ফোল্ডারে রাখবেন এবং Flask স্বয়ংক্রিয়ভাবে তাদের সার্ভ করবে।
১. Static ফোল্ডার সেটআপ
Flask ডিফল্টভাবে static/ নামের একটি ফোল্ডার তৈরি করে, যেখানে আপনি আপনার CSS, JavaScript, এবং ইমেজ ফাইলগুলি রাখবেন।
ফোল্ডারের কাঠামো কিছুটা এরকম হতে পারে:
flask_project/
├── app.py
├── static/
│ ├── css/
│ │ └── style.css
│ ├── js/
│ │ └── script.js
│ └── images/
│ └── logo.png
└── templates/
└── index.html
এখানে:
static/: স্ট্যাটিক ফাইল রাখার জন্য ফোল্ডার।css/: CSS ফাইল সংরক্ষণের জন্য সাব-ফোল্ডার।js/: JavaScript ফাইল সংরক্ষণের জন্য সাব-ফোল্ডার।images/: চিত্র ফাইল সংরক্ষণের জন্য সাব-ফোল্ডার।
২. Static Files ব্যবহার করা
Flask-এ স্ট্যাটিক ফাইলগুলোকে ব্যবহার করতে সাধারণভাবে url_for() ফাংশন ব্যবহার করা হয়, যা সঠিক স্ট্যাটিক ফাইলের URL তৈরি করতে সাহায্য করে।
উদাহরণ:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flask অ্যাপ</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
<h1>স্বাগতম Flask অ্যাপে!</h1>
<img src="{{ url_for('static', filename='images/logo.png') }}" alt="Logo">
<script src="{{ url_for('static', filename='js/script.js') }}"></script>
</body>
</html>
এখানে:
url_for('static', filename='css/style.css'): এটি স্ট্যাটিক CSS ফাইলের জন্য সঠিক URL তৈরি করে।url_for('static', filename='images/logo.png'): এটি স্ট্যাটিক ইমেজ ফাইলের জন্য URL তৈরি করে।url_for('static', filename='js/script.js'): এটি স্ট্যাটিক JavaScript ফাইলের জন্য URL তৈরি করে।
Flask স্বয়ংক্রিয়ভাবে /static/ পাথের মাধ্যমে স্ট্যাটিক ফাইল সার্ভ করে থাকে। উদাহরণস্বরূপ, style.css ফাইলটি আসলে /static/css/style.css পাথের মাধ্যমে সার্ভ হবে।
৩. Static ফাইলগুলির রুট (URL Path)
Flask-এ স্ট্যাটিক ফাইলগুলির রুট বা URL পাথ হল /static/। Flask নিজে স্ট্যাটিক ফাইলগুলিকে /static/ পাথের মাধ্যমে অ্যাক্সেস করে থাকে। স্ট্যাটিক ফাইলগুলি Flask অ্যাপ্লিকেশনের static/ ফোল্ডারে থাকা উচিত।
যদি আপনার স্ট্যাটিক ফাইলের পথ কিছুটা আলাদা রাখতে চান, তাহলে Flask কনফিগারেশন সেটিংস ব্যবহার করতে পারেন:
app = Flask(__name__, static_folder="public")
এখন Flask স্ট্যাটিক ফাইলগুলো public/ ফোল্ডার থেকে সার্ভ করবে।
৪. Flask-এ Static Files এর কাস্টম রুট
আপনি যদি আপনার স্ট্যাটিক ফাইলের জন্য কাস্টম URL পাথ চান, Flask-এ সেটি করা সম্ভব।
from flask import Flask
app = Flask(__name__, static_url_path="/assets", static_folder="static")
@app.route("/")
def home():
return "স্ট্যাটিক ফাইল অ্যাক্সেস করুন /assets পাথ থেকে!"
if __name__ == "__main__":
app.run(debug=True)
এখানে:
static_url_path: এটি স্ট্যাটিক ফাইলের URL পাথ কাস্টমাইজ করার জন্য ব্যবহৃত হয়। এখানে/assetsপাথ সেট করা হয়েছে।- Flask স্বয়ংক্রিয়ভাবে
/assets/পাথের মাধ্যমে স্ট্যাটিক ফাইল সার্ভ করবে।
৫. Static File Caching এবং Versioning
Flask সাধারণত স্ট্যাটিক ফাইল ক্যাশিং এবং ভার্সনিং সরবরাহ করে না। তবে, আপনি স্ট্যাটিক ফাইলের ভার্সনিং চালু করতে send_from_directory ফাংশন ব্যবহার করতে পারেন, যা স্ট্যাটিক ফাইলগুলিকে কাস্টম রুট দিয়ে সার্ভ করতে সহায়ক।
উদাহরণ:
from flask import Flask, send_from_directory
app = Flask(__name__)
@app.route('/files/<path:filename>')
def serve_static_file(filename):
return send_from_directory('static', filename)
if __name__ == "__main__":
app.run(debug=True)
এখানে:
send_from_directory()ফাংশনটি কাস্টম পাথ থেকে ফাইল পাঠানোর জন্য ব্যবহৃত হয়।
৬. স্ট্যাটিক ফাইল আপলোড এবং ফাইল সাইজ সীমাবদ্ধতা
Flask-এ স্ট্যাটিক ফাইল আপলোড করার সময়, আপনি চাইলে ফাইলের সাইজ সীমাবদ্ধ করতে পারেন।
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16 MB পর্যন্ত ফাইল আপলোড অনুমোদিত
এটি অ্যাপ্লিকেশনটিকে বড় সাইজের ফাইল আপলোড থেকে সীমাবদ্ধ করতে সহায়তা করবে।
Flask-এ Static Files (CSS, JS, Images) ব্যবস্থাপনা করা খুবই সহজ এবং শক্তিশালী। Flask নিজেই স্ট্যাটিক ফাইলগুলিকে /static/ পাথের মাধ্যমে সার্ভ করে এবং url_for() ফাংশনের মাধ্যমে এগুলি অ্যাক্সেস করা যায়। আপনি কাস্টম রুট, ভার্সনিং, এবং ক্যাশিং সহ স্ট্যাটিক ফাইলগুলিকে কার্যকরভাবে পরিচালনা করতে পারেন। Flask অ্যাপ্লিকেশন তৈরির সময় স্ট্যাটিক ফাইল ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে ব্যবহারকারীর ইন্টারফেসের জন্য।
Read more