CherryPy এর টেমপ্লেট ইঞ্জিন

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

279

CherryPy নিজে একটি টেমপ্লেট ইঞ্জিন সরবরাহ না করলেও, এটি সহজে অন্যান্য পাইথন টেমপ্লেট ইঞ্জিনের সাথে ইন্টিগ্রেট করা যেতে পারে। জনপ্রিয় টেমপ্লেট ইঞ্জিনগুলোর মধ্যে Jinja2, Mako, এবং Tornado Templates অন্যতম। এই টেমপ্লেট ইঞ্জিনগুলো CherryPy এর সাথে ব্যবহৃত হতে পারে, যাতে আপনি ডাইনামিক HTML পেজ তৈরি করতে পারেন।

CherryPy এবং টেমপ্লেট ইঞ্জিনের সংযোগ

CherryPy সাধারণত cherrypy.tools এবং cherrypy.response ব্যবহার করে HTML পেজ রেন্ডার করতে সক্ষম। টেমপ্লেট ইঞ্জিনের সাথে সংযোগ করার জন্য আপনাকে tools ব্যবহার করতে হবে, যা টেমপ্লেট রেন্ডারিংয়ের জন্য প্রয়োজনীয়। এখানে Jinja2 টেমপ্লেট ইঞ্জিনের উদাহরণ ব্যবহার করা হয়েছে।


Jinja2 টেমপ্লেট ইঞ্জিন সেটআপ

Jinja2 হলো একটি জনপ্রিয় Python টেমপ্লেট ইঞ্জিন যা HTML পেজে ডাইনামিক কন্টেন্ট ইনজেক্ট করতে ব্যবহৃত হয়। CherryPy এর সাথে এটি সহজে ইন্টিগ্রেট করা যায়।

১. Jinja2 ইনস্টলেশন

প্রথমে Jinja2 টেমপ্লেট ইঞ্জিন ইনস্টল করতে হবে:

pip install jinja2

Jinja2 Integration Example

উদাহরণ: CherryPy এবং Jinja2 টেমপ্লেট ইঞ্জিনের সাথে একটি অ্যাপ তৈরি করা

import cherrypy
from jinja2 import Environment, FileSystemLoader
import os

class MyApp:
    @cherrypy.expose
    def index(self):
        return self.render_template('index.html', name="Rahul")

    def render_template(self, template_name, **kwargs):
        template_dir = os.path.join(os.path.dirname(__file__), 'templates')
        env = Environment(loader=FileSystemLoader(template_dir))
        template = env.get_template(template_name)
        return template.render(**kwargs)

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

এখানে:

  • render_template মেথডে Jinja2 টেমপ্লেট ইঞ্জিনের সাথে CherryPy সংযুক্ত করা হয়েছে।
  • template_name এর মাধ্যমে টেমপ্লেট ফাইলের নাম (যেমন: index.html) পাস করা হয়।
  • kwargs দিয়ে ডাইনামিক ডেটা পাস করা হয় (এখানে name="Rahul" পাস করা হয়েছে)।

টেমপ্লেট ফাইল (templates/index.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>CherryPy and Jinja2 Example</title>
</head>
<body>
    <h1>স্বাগতম, {{ name }}!</h1>
    <p>এই পেজটি CherryPy এবং Jinja2 দ্বারা রেন্ডার করা হয়েছে।</p>
</body>
</html>

আরও টেমপ্লেট ইঞ্জিন ইন্টিগ্রেশন

CherryPy তে আপনি Mako, Tornado, এবং অন্যান্য টেমপ্লেট ইঞ্জিনও ব্যবহার করতে পারেন। এগুলোর সাথে ইন্টিগ্রেশন করতে সাধারণত tools ব্যবহার করা হয়।

উদাহরণ: Mako Integration

Mako টেমপ্লেট ইঞ্জিনও CherryPy এর সাথে খুব সহজে ইন্টিগ্রেট করা যায়। প্রথমে Mako ইনস্টল করতে হবে:

pip install mako

এটি ব্যবহার করতে নিচের মতো কোড লিখতে হবে:

import cherrypy
from mako.template import Template
from mako.lookup import TemplateLookup

class MyApp:
    @cherrypy.expose
    def index(self):
        return self.render_template("index.html", name="Rahul")

    def render_template(self, template_name, **kwargs):
        lookup = TemplateLookup(directories=['./templates'])
        template = lookup.get_template(template_name)
        return template.render(**kwargs)

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

এখানে:

  • TemplateLookup ব্যবহার করে টেমপ্লেট ফাইলের লোকেশন নির্ধারণ করা হয়।
  • render_template মেথডে ডাইনামিক কনটেন্ট রেন্ডার করা হয়।

CherryPy নিজে কোনো টেমপ্লেট ইঞ্জিন সরবরাহ না করলেও, এটি সহজে অন্য টেমপ্লেট ইঞ্জিন যেমন Jinja2, Mako বা Tornado Templates এর সাথে ইন্টিগ্রেট করা যায়। টেমপ্লেট ইঞ্জিন ব্যবহারের মাধ্যমে আপনি ডাইনামিক এবং ইউজার ফ্রেন্ডলি ওয়েব পেজ তৈরি করতে পারবেন, যা CherryPy অ্যাপ্লিকেশনগুলিকে আরও শক্তিশালী এবং ইন্টারঅ্যাকটিভ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...