Flask একটি মাইক্রোফ্রেমওয়ার্ক, এবং এটি সহজেই স্ট্যাটিক ফাইল পরিচালনা করতে সহায়ক। স্ট্যাটিক ফাইল বলতে CSS, JavaScript, ইমেজ এবং অন্যান্য ফাইলগুলি বোঝায় যেগুলি সরাসরি ক্লায়েন্ট ব্রাউজারে রেন্ডার হয় এবং পরিবর্তন হয় না। Flask-এ স্ট্যাটিক ফাইলের জন্য ডিফল্টভাবে একটি static/ নামক ফোল্ডার ব্যবহার করা হয়।
১. Flask-এ Static Folder সেটআপ করা
Flask অ্যাপ্লিকেশনের মধ্যে স্ট্যাটিক ফোল্ডার একটি ডিফল্ট ফোল্ডার, যেখানে CSS, JavaScript, এবং ইমেজ ফাইল রাখা হয়। Flask নিজে থেকেই এই ফোল্ডারে রাখা ফাইলগুলোকে সঠিকভাবে সেবা প্রদান করে।
উদাহরণ:
আপনি Flask প্রজেক্টের মূল ফোল্ডারে একটি static/ ফোল্ডার তৈরি করবেন। এর মধ্যে আপনার CSS, JavaScript, এবং ইমেজ ফাইল রাখতে পারেন।
flask_project/
├── app.py
├── static/
│ ├── css/
│ │ └── style.css
│ ├── js/
│ │ └── script.js
│ └── images/
│ └── logo.png
└── templates/
└── index.html
এখানে:
- static/css/style.css: CSS ফাইল।
- static/js/script.js: JavaScript ফাইল।
- static/images/logo.png: ইমেজ ফাইল।
২. Static ফাইল ব্রাউজারে লোড করা
Flask-এ static ফোল্ডারে রাখা ফাইল অ্যাক্সেস করতে, আপনি URL এর মাধ্যমে সরাসরি অ্যাক্সেস করতে পারবেন। Flask স্বয়ংক্রিয়ভাবে static/ ফোল্ডারের ফাইলগুলো সার্ভ করে।
উদাহরণ:
- CSS ফাইল লোড করা:
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
- JavaScript ফাইল লোড করা:
<script src="{{ url_for('static', filename='js/script.js') }}"></script>
- ইমেজ ফাইল লোড করা:
<img src="{{ url_for('static', filename='images/logo.png') }}" alt="Logo">
এখানে url_for('static', filename='...') ফাংশনটি Flask-এর static ফোল্ডারে রাখা ফাইলের সঠিক URL তৈরি করে।
৩. Custom Static Folder
যদি আপনি static ফোল্ডারটির নাম পরিবর্তন করতে চান বা অন্য কোনও ফোল্ডারে রাখতে চান, তবে Flask অ্যাপ্লিকেশন ইনিশিয়ালাইজ করার সময় static_folder প্যারামিটার ব্যবহার করতে পারেন।
উদাহরণ:
from flask import Flask
app = Flask(__name__, static_folder='assets')
@app.route("/")
def home():
return "স্বাগতম Flask অ্যাপে!"
if __name__ == "__main__":
app.run(debug=True)
এখানে, static_folder='assets' দ্বারা Flask জানাচ্ছে যে স্ট্যাটিক ফাইলগুলো assets/ ফোল্ডারে থাকবে।
৪. Flask-এ Static ফাইলের URL
Flask-এ স্ট্যাটিক ফাইলের URL সাধারনত /static/ দিয়ে শুরু হয়, উদাহরণস্বরূপ:
- CSS ফাইল:
/static/css/style.css - JavaScript ফাইল:
/static/js/script.js - ইমেজ ফাইল:
/static/images/logo.png
যখন আপনি url_for('static', filename='...') ব্যবহার করেন, Flask নিজে থেকেই সঠিক URL তৈরি করে দেয়।
৫. Flask-এ Static ফাইল সাপোর্ট করার জন্য Template ব্যবহার করা
Flask-এ HTML টেমপ্লেট ফাইলের মধ্যে স্ট্যাটিক ফাইল লিংক যোগ করতে, আপনি url_for() ফাংশন ব্যবহার করতে পারেন। এটি Flask-এর টেমপ্লেট ইঞ্জিন Jinja2-কে ব্যবহার করে।
উদাহরণ:
templates/index.html:
<!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'): এটি সঠিক URL তৈরি করে যাতে আপনার CSS ফাইলটি ঠিকভাবে লোড হতে পারে।
৬. Custom Static Folder থেকে ফাইল সার্ভিং
Flask একটি কাস্টম স্ট্যাটিক ফোল্ডার থেকে ফাইল সার্ভ করার জন্য send_from_directory() ফাংশন ব্যবহার করতে পারে। এটি যদি আপনি চান যে অন্য কোনো ফোল্ডার থেকে ফাইল সার্ভ করা হোক, তবে ব্যবহার করা হয়।
উদাহরণ:
from flask import Flask, send_from_directory
app = Flask(__name__)
@app.route('/uploads/<filename>')
def download_file(filename):
return send_from_directory('uploads', filename)
if __name__ == "__main__":
app.run(debug=True)
এখানে:
send_from_directory()ফাংশনটি নির্দিষ্ট ডিরেক্টরি থেকে ফাইল পাঠাতে ব্যবহৃত হয়।'uploads'ফোল্ডার থেকে ফাইল সার্ভ করা হচ্ছে।
Flask অ্যাপ্লিকেশনটিতে static folder ব্যবহার করা সহজ এবং শক্তিশালী। এটি আপনাকে CSS, JavaScript, ইমেজ এবং অন্যান্য স্ট্যাটিক ফাইলগুলি ক্লায়েন্ট ব্রাউজারে সরাসরি পরিবেশন করতে সাহায্য করে। আপনি url_for() ফাংশন ব্যবহার করে এই ফাইলগুলোকে ডায়নামিকভাবে লিংক করতে পারেন, এবং কাস্টম ফোল্ডার সেটআপ করে সঠিক URL তৈরি করতে পারেন।
Read more