Jinja2 এর সাথে ইন্টিগ্রেশন

Templates এবং Views - চেরিপাই (CherryPy) - Web Development

283

CherryPy এবং Jinja2 একত্রে ব্যবহার করা অনেক জনপ্রিয়, কারণ CherryPy ওয়েব ফ্রেমওয়ার্কের মধ্যে Jinja2 টেমপ্লেট ইঞ্জিনকে ইন্টিগ্রেট করা সহজ এবং কার্যকরী। Jinja2 একটি শক্তিশালী টেমপ্লেট ইঞ্জিন যা HTML পেজে ডাইনামিক ডেটা রেন্ডার করতে ব্যবহৃত হয়। CherryPy এবং Jinja2 এর ইন্টিগ্রেশন আপনাকে ওয়েব অ্যাপ্লিকেশনে ডাইনামিক কন্টেন্ট এবং লজিক যুক্ত করতে সহায়তা করবে।


Jinja2 কি?

Jinja2 একটি পপুলার পাইথন ভিত্তিক টেমপ্লেট ইঞ্জিন যা HTML, XML, বা অন্যান্য মার্কআপ ভাষার জন্য ব্যবহৃত হয়। এটি টেমপ্লেট ফাইলের মধ্যে ডাইনামিক কন্টেন্ট রেন্ডার করতে সহায়তা করে, যেমন প্যারামিটার, লুপ, কন্ডিশনাল স্টেটমেন্ট ইত্যাদি।


CherryPy এবং Jinja2 এর ইন্টিগ্রেশন

CherryPy এর সাথে Jinja2 ইন্টিগ্রেট করতে আপনাকে কয়েকটি ধাপ অনুসরণ করতে হবে। প্রথমে আপনাকে Jinja2 টেমপ্লেট ইঞ্জিন ইনস্টল করতে হবে, তারপর CherryPy এ সেটআপ করতে হবে। চলুন ধাপে ধাপে এটি দেখি:


ধাপ ১: Jinja2 ইনস্টলেশন

আপনি যদি Jinja2 আপনার সিস্টেমে ইনস্টল না করে থাকেন, তবে এটি পিপ (pip) এর মাধ্যমে ইনস্টল করতে পারেন:

pip install Jinja2

ধাপ ২: CherryPy ও Jinja2 ইন্টিগ্রেশন

CherryPy তে Jinja2 ব্যবহার করার জন্য প্রথমে আপনি Jinja2 টেমপ্লেট লোড করতে একটি কাস্টম টুল তৈরি করবেন এবং তারপর CherryPy অ্যাপ্লিকেশনের রেসপন্সে টেমপ্লেট রেন্ডার করবেন।

উদাহরণ: CherryPy এবং Jinja2 ইন্টিগ্রেশন

import cherrypy
from jinja2 import Environment, FileSystemLoader

class MyApp:
    def __init__(self):
        # Jinja2 টেমপ্লেট লোডার সেটআপ
        self.jinja_env = Environment(loader=FileSystemLoader('templates'))

    def render_template(self, template_name, **kwargs):
        # টেমপ্লেট রেন্ডারিং ফাংশন
        template = self.jinja_env.get_template(template_name)
        return template.render(**kwargs)

    @cherrypy.expose
    def index(self):
        # ডাইনামিক ডেটা এবং টেমপ্লেট রেন্ডারিং
        return self.render_template('index.html', title='স্বাগতম', message='CherryPy এবং Jinja2 এর সাথে ইন্টিগ্রেশন')

if __name__ == '__main__':
    cherrypy.quickstart(MyApp())

ব্যাখ্যা:

  • self.jinja_env = Environment(loader=FileSystemLoader('templates')): Jinja2 এর Environment সেটআপ করা হয় এবং টেমপ্লেট ফাইলগুলো templates ফোল্ডারে রাখার জন্য ফাইল সিস্টেম লোডার ব্যবহার করা হয়।
  • render_template: এটি Jinja2 টেমপ্লেট রেন্ডার করতে ব্যবহৃত একটি কাস্টম ফাংশন, যা টেমপ্লেট নাম এবং ডাইনামিক ডেটা নেয়।
  • index: এটি CherryPy এর index রুট, যেখানে index.html টেমপ্লেট রেন্ডার করা হয়।

ধাপ ৩: টেমপ্লেট ফাইল তৈরি করা

templates/index.html নামে একটি HTML টেমপ্লেট তৈরি করুন:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ message }}</h1>
</body>
</html>

এখানে:

  • {{ title }} এবং {{ message }} হল Jinja2 এর টেমপ্লেট ভেরিয়েবল, যা CherryPy অ্যাপ্লিকেশন থেকে ডাইনামিকভাবে পাস করা হবে।

ধাপ ৪: CherryPy সার্ভার চালানো

উপরের কোডটি সেভ করার পর টার্মিনালে বা কমান্ড প্রম্পটে এটি চালান:

python app.py

এখন ব্রাউজারে http://127.0.0.1:8080/ গিয়ে দেখতে পাবেন:

স্বাগতম
CherryPy এবং Jinja2 এর সাথে ইন্টিগ্রেশন

ধাপ ৫: আরও টেমপ্লেট ফিচার ব্যবহার করা

Jinja2 তে আরও উন্নত টেমপ্লেট ফিচার রয়েছে, যেমন:

  • ফ্লো কন্ট্রোল (Flow control): if-else, for লুপ, filters, macros ইত্যাদি।
  • ফিল্টার ব্যবহার: ডেটা প্রসেসিং, যেমন uppercase, date formatting, default values ইত্যাদি।

উদাহরণ: ফিল্টার ব্যবহারের জন্য

# index.html এ filter প্রয়োগ
<h1>{{ message|upper }}</h1>

এটি message ভেরিয়েবলটির মানকে uppercase করবে।


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

Content added By
Promotion

Are you sure to start over?

Loading...