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 অ্যাপ্লিকেশনগুলিকে আরও শক্তিশালী এবং ইন্টারঅ্যাকটিভ করে তোলে।
Read more