CherryPy একটি লাইটওয়েট ওয়েব ফ্রেমওয়ার্ক, যা দিয়ে আপনি সহজে HTML রেসপন্স দিতে পারেন এবং টেমপ্লেট ব্যবহার করে ডায়নামিক HTML তৈরি করতে পারেন। CherryPy এর সাথে টেমপ্লেট ইঞ্জিন যেমন Jinja2 ব্যবহার করে আপনি ডায়নামিক কনটেন্ট রেন্ডার করতে পারেন। এই টিউটোরিয়ালে আমরা সাধারণ HTML রেসপন্স এবং টেমপ্লেটিং এর মাধ্যমে ডায়নামিক HTML রেন্ডার করার পদ্ধতি দেখব।
Simple HTML Response
CherryPy দিয়ে সরাসরি HTML রেসপন্স দেওয়া খুবই সহজ। আপনি return স্টেটমেন্টে সরাসরি HTML কোড দিয়ে রেসপন্স পাঠাতে পারেন।
উদাহরণ: সরাসরি HTML রেসপন্স
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return """<html>
<head><title>CherryPy Example</title></head>
<body>
<h1>স্বাগতম CherryPy অ্যাপে!</h1>
<p>এটি একটি সহজ HTML রেসপন্স উদাহরণ।</p>
</body>
</html>"""
if __name__ == '__main__':
cherrypy.quickstart(MyApp())
এখানে index মেথড HTML কোড সরাসরি রিটার্ন করছে যা ওয়েব পেজে প্রদর্শিত হবে।
ব্রাউজারে পরীক্ষা:
- ব্রাউজারে
http://127.0.0.1:8080এ গিয়ে "স্বাগতম CherryPy অ্যাপে!" লেখা দেখতে পাবেন।
Templating with Jinja2
CherryPy এর সাথে Jinja2 টেমপ্লেট ইঞ্জিন ব্যবহার করে ডায়নামিক HTML তৈরি করা যায়। Jinja2 আপনাকে Python ডাটা থেকে HTML টেমপ্লেট তৈরি করতে সাহায্য করে, যা ওয়েব পেজে রেন্ডার করা হয়।
Jinja2 ইনস্টলেশন
প্রথমে Jinja2 ইন্সটল করতে হবে:
pip install jinja2
Jinja2 ব্যবহার করে Templating
CherryPy তে Jinja2 ব্যবহার করতে আপনি jinja2 মডিউল এবং CherryPy এর render ফিচার ব্যবহার করবেন।
উদাহরণ: Jinja2 দিয়ে HTML টেমপ্লেট
প্রজেক্ট কাঠামো:
project/ ├── app.py ├── templates/ │ └── index.html └── static/ └── styles.cssindex.htmlটেমপ্লেট (templates/index.html):<html> <head> <title>{{ title }}</title> <link rel="stylesheet" href="/static/styles.css"> </head> <body> <h1>{{ message }}</h1> <p>{{ description }}</p> </body> </html>Python কোড (
app.py):import cherrypy from jinja2 import Environment, FileSystemLoader class MyApp: def __init__(self): # Jinja2 টেমপ্লেট লোডার সেট আপ self.env = Environment(loader=FileSystemLoader('templates')) @cherrypy.expose def index(self): # টেমপ্লেট লোড করা template = self.env.get_template('index.html') # ডাটা দিয়ে টেমপ্লেট রেন্ডার করা return template.render(title="CherryPy Jinja2 Example", message="স্বাগতম CherryPy অ্যাপে!", description="এটি Jinja2 দিয়ে রেন্ডার করা একটি ডায়নামিক HTML।") if __name__ == '__main__': cherrypy.quickstart(MyApp())
এখানে, Jinja2 টেমপ্লেট ইঞ্জিন ব্যবহার করা হয়েছে:
index.htmlটেমপ্লেট ফাইলটি টাইটেল, মেসেজ, এবং ডেসক্রিপশন দেখানোর জন্য প্রস্তুত।- Python কোডে টেমপ্লেট লোড করা হয়েছে এবং ডায়নামিক ডাটা পাঠানো হয়েছে যেমন title, message, এবং description।
ব্রাউজারে পরীক্ষা:
- ব্রাউজারে
http://127.0.0.1:8080এ গিয়ে আপনার ডায়নামিক HTML দেখতে পাবেন।
Static File Serve with Jinja2
CherryPy তে স্ট্যাটিক ফাইল যেমন CSS বা JS ফাইল সরবরাহ করা যেতে পারে। আপনাকে tools.staticdir.on কনফিগারেশন ব্যবহার করতে হবে।
উদাহরণ: Static File Serve
CSS ফাইল (static/styles.css):
body { font-family: Arial, sans-serif; } h1 { color: #007BFF; }Python কোড (
app.py):import cherrypy from jinja2 import Environment, FileSystemLoader class MyApp: def __init__(self): self.env = Environment(loader=FileSystemLoader('templates')) @cherrypy.expose def index(self): template = self.env.get_template('index.html') return template.render(title="CherryPy Jinja2 Example", message="স্বাগতম CherryPy অ্যাপে!", description="এটি Jinja2 দিয়ে রেন্ডার করা একটি ডায়নামিক HTML।") # কনফিগারেশন: স্ট্যাটিক ফাইল পরিবেশন করা config = { '/static': { 'tools.staticdir.on': True, 'tools.staticdir.dir': './static' } } if __name__ == '__main__': cherrypy.quickstart(MyApp(), '/', config)
এখানে স্ট্যাটিক ফাইল সার্ভ করার জন্য tools.staticdir.on কনফিগারেশন ব্যবহার করা হয়েছে। styles.css ফাইলটি /static/styles.css পাথে অ্যাক্সেস করা যাবে।
ব্রাউজারে পরীক্ষা:
- ব্রাউজারে
http://127.0.0.1:8080এবংhttp://127.0.0.1:8080/static/styles.cssগিয়ে স্টাইলিং এবং টেমপ্লেটের ডায়নামিক কনটেন্ট দেখতে পারবেন।
CherryPy দিয়ে HTML রেসপন্স এবং Jinja2 টেমপ্লেট ব্যবহারের মাধ্যমে ডায়নামিক ওয়েব পেজ তৈরি করা সহজ। Jinja2 টেমপ্লেট ইঞ্জিন আপনাকে Python ডাটা থেকে HTML তৈরি করতে সাহায্য করে এবং CherryPy এর স্ট্যাটিক ফাইল সার্ভিং এর মাধ্যমে আপনি স্টাইলিং, স্ক্রিপ্টিং এবং অন্যান্য ফাইল পরিবেশন করতে পারেন।