Skill

টেমপ্লেট তৈরি এবং Data Rendering

Flask Templating এবং Jinja2 - ফ্লাস্ক (Flask) - Web Development

267

Flask ব্যবহার করে আপনি HTML টেমপ্লেট তৈরি করতে এবং ডাইনামিক ডেটা রেন্ডার করতে পারেন। Flask-এ টেমপ্লেট রেন্ডারিংয়ের জন্য Jinja2 টেমপ্লেট ইঞ্জিন ব্যবহার করা হয়, যা HTML কোডে Python কোডের অংশকে একত্রিত করতে সহায়ক। Jinja2 আপনাকে ডাইনামিক কনটেন্ট তৈরি করতে, লুপ চালাতে, কন্ডিশনাল স্টেটমেন্ট ব্যবহার করতে এবং আরও অনেক কিছু করতে সক্ষম করে।


১. Flask-এ টেমপ্লেট তৈরি

Flask-এ টেমপ্লেট ব্যবহারের জন্য HTML ফাইলগুলি templates/ ফোল্ডারে রাখা হয়। Flask স্বয়ংক্রিয়ভাবে templates/ ফোল্ডার থেকে টেমপ্লেট লোড করে।

ধাপ ১: ফোল্ডার স্ট্রাকচার তৈরি

flask_project/
├── app.py
└── templates/
    └── index.html

ধাপ ২: index.html টেমপ্লেট তৈরি করা

templates/ ফোল্ডারে একটি index.html ফাইল তৈরি করুন এবং এতে 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>
</head>
<body>
    <h1>{{ title }}</h1>
    <p>স্বাগতম, {{ name }}!</p>
</body>
</html>

এখানে:

  • {{ title }} এবং {{ name }} হলো Jinja2 টেমপ্লেট ভ্যারিয়েবল। Flask এই ভ্যারিয়েবলগুলির মান অ্যাসাইন করবে।

ধাপ ৩: Flask অ্যাপ তৈরি করা

এখন, আপনার app.py ফাইলে Flask অ্যাপটি তৈরি করুন এবং render_template() ফাংশন ব্যবহার করে টেমপ্লেট রেন্ডার করুন।

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def home():
    return render_template("index.html", title="Flask টেমপ্লেট", name="John Doe")

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  • render_template() ফাংশনটি index.html টেমপ্লেট রেন্ডার করে এবং title এবং name প্যারামিটারগুলির মান টেমপ্লেটের মধ্যে পাঠায়।

ধাপ ৪: অ্যাপ চালানো

python app.py

এটি চালানোর পরে, আপনার ব্রাউজারে http://127.0.0.1:5000/ URL এ গিয়ে Flask টেমপ্লেট টেক্সট সহ স্বাগতম, John Doe! দেখতে পাবেন।


২. Data Rendering: ডাইনামিক ডেটা রেন্ডারিং

Flask আপনাকে ডাইনামিক ডেটা রেন্ডার করতে সহায়ক করে, যেমন লিস্ট বা ডিকশনারি রেন্ডার করা, কন্ডিশনাল লজিক প্রয়োগ করা, এবং আরও অনেক কিছু।

উদাহরণ ১: লিস্ট রেন্ডারিং

এখানে একটি উদাহরণ দেওয়া হলো যেখানে আমরা একটি লিস্ট HTML টেবিলে রেন্ডার করব।

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>
</head>
<body>
    <h1>পণ্যের তালিকা</h1>
    <ul>
        {% for item in items %}
            <li>{{ item }}</li>
        {% endfor %}
    </ul>
</body>
</html>

এখানে:

  • {% for item in items %}: এটি একটি Jinja2 লুপ যা items নামক লিস্টের প্রতিটি আইটেমে লুপ চালাবে।
  • {{ item }}: এটি প্রতিটি আইটেমকে HTML টেমপ্লেটের মধ্যে রেন্ডার করবে।
app.py:
from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def home():
    items = ['আপেল', 'কমলা', 'কলা', 'আঙ্গুর']
    return render_template("index.html", items=items)

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  • items: একটি লিস্ট, যা render_template() ফাংশনের মাধ্যমে index.html টেমপ্লেটে পাঠানো হয়েছে।

ব্রাউজারে রেন্ডারিং:

এটি ব্রাউজারে গেলে, আপনি দেখতে পাবেন:

পণ্যের তালিকা
- আপেল
- কমলা
- কলা
- আঙ্গুর

৩. Conditionals এবং Jinja2

Flask-এ টেমপ্লেট রেন্ডার করার সময় আপনি কন্ডিশনাল স্টেটমেন্ট ব্যবহার করতে পারেন, যা আপনার ডেটার উপর ভিত্তি করে HTML কন্টেন্ট শো বা হাইড করতে সহায়ক।

উদাহরণ ২: কন্ডিশনাল রেন্ডারিং

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>
</head>
<body>
    <h1>স্বাগতম!</h1>
    {% if user %}
        <p>স্বাগতম, {{ user }}!</p>
    {% else %}
        <p>আপনি লগইন করেননি।</p>
    {% endif %}
</body>
</html>

এখানে:

  • {% if user %}: যদি user ভ্যারিয়েবলটি অ্যাসাইন করা থাকে, তবে "স্বাগতম, user!" মেসেজটি দেখাবে, অন্যথায় "আপনি লগইন করেননি" মেসেজটি দেখাবে।
app.py:
from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def home():
    user = "John Doe"  # আপনি চাইলে এটিকে None অথবা অন্য কিছু সেট করতে পারেন
    return render_template("index.html", user=user)

if __name__ == "__main__":
    app.run(debug=True)

এখানে:

  • user ভ্যারিয়েবলটি index.html টেমপ্লেটে পাঠানো হয়েছে এবং কন্ডিশনাল স্টেটমেন্টের মাধ্যমে তার মান রেন্ডার করা হয়েছে।

ব্রাউজারে রেন্ডারিং:

আপনি যদি user = "John Doe" পাঠান, তাহলে আপনি দেখতে পাবেন:

স্বাগতম, John Doe!

যদি user = None বা কিছু না দেওয়া হয়, তবে দেখাবে:

আপনি লগইন করেননি।

Flask-এ টেমপ্লেট তৈরি এবং ডেটা রেন্ডারিং অত্যন্ত শক্তিশালী। Jinja2 টেমপ্লেট ইঞ্জিন ব্যবহার করে আপনি ডাইনামিক কনটেন্ট তৈরি করতে পারেন এবং ব্যবহারকারীর তথ্য বা অন্যান্য ডেটা নির্ভর করে কন্টেন্ট রেন্ডার করতে পারেন। Flask-এ টেমপ্লেট ব্যবহারের মাধ্যমে আপনি সহজেই HTML পেজগুলো ডাইনামিক ও ইন্টারঅ্যাকটিভ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...