Templating CherryPy Dengan Jinja2
Sebenarnya saya juga pernah menulis tentang penggunaantemplating system pada CherryPy hanya saja ditulisan tersebut saya melakukan percobaan menggunakan fasilitas Google Appengine dengan contoh menggunakan templating system default milik Appengine.
Dengan keterbukaan framework CherryPy sebenarnya kita bisa menggunakan templating system yang lain selain Jinja, antara lain ZPT, Cheetah, Genshi dan lain-lain coba cek dokumentasi CherryPy yang berkaitan dengan templating pada CherryPy.
Installasi Jinja2
Silahkan unduh Jinja2 di http://pypi.python.org/pypi/Jinja2/. Sebelum Anda melakukan installasi Jinja pastikan di server Anda sudah terinstall setuptools, bila belum silahkan unduh dihttp://pypi.python.org/pypi/setuptools/. Berhubung saya menggunakan Slackware, untuk mempermudah proses instalasi saya menggunakan script SlackBuild yang bisa diunduh dihttp://slackbuilds.org/repository/13.37/python/pysetuptools/.
Install Jinja dengan perintah berikut :
# python setup.py install
Untuk mengetahui cara installasi, setting dan penggunaan API Jinja selengkapnya silahkan baca dokumentasinya dihttp://jinja.pocoo.org/docs/
Saatnya Mencoba
Buatlah file html yang akan kita jadikan template, misalnya dengan nama file test.html, seperti berikut ini :
<h1>
{# menggunakan dua variabel sekaligus dalam satu tag <h1>, variabel tes1 dan tes2 #}
{{ tes1 }} {{ tes2 }}
</h1>
Contoh Perulangan :
<ul>
{# memasukan value data list dari variabel tes3 ke instan 'no' #}
{% for no in tes3 %}
<li>{{ no }}</li>
{% endfor %}
</ul>
Sekarang kita akan membuat file handler atau file utama aplikasi CherryPy kita dengan nama file cherry.py (disini saya hanya memodifikasi contoh ditulisan sebelumnya saja dan simpan di folder tempat penyimpanan aplikasi CherryPy sesuai setting di web server silahkan baca tulisan sebelumnya), seperti berikut ini:
import sys
sys.stdout = sys.stderr
import atexit
import threading
import cherrypy
from jinja2 import Environment, FileSystemLoader
# mendefinisikan folder penyimpanan file template yang dibuat
env = Environment(loader=FileSystemLoader('/var/www/htdocs/cherry'))
cherrypy.config.update({'environment': 'embedded'})
if cherrypy.__version__.startswith('3.0') and cherrypy.engine.state==0:
cherrypy.engine.start(blocking=False)
atexit.register(cherrypy.engine.stop)
class Root(object):
def index(self):
tmpl = env.get_template('test.html')
return tmpl.render(
tes1='Hello',
tes2='World',
# definisikan variabel dengan data bertipe list
tes3=['No. 1','No. 2','No. 3']
)
index.exposed = True
application = cherrypy.Application(Root(), script_name=None, config=None)
Nah, aplikasi sudah bisa di coba. Silahkan buka browser dan ketikan http://localhost/cherry/