Rohmad Hidayat's Blog

Icon

My Notes on Mobile Technology, Python GUI, Python Web Framework, Software Development, Database, Server, Embedded System, Mini Computer

Membangun Aplikasi Web dengan Python dan Cherrypy

Pendahuluan
Aplikasi web kini menjadi pilihan programmer untuk membangun berbagai macam aplikasi. Disamping kemudahan untuk menggabungkan dengan system internet, aplikasi berbasis web banyak didukung berbagai macam teknologi ionternet terbaru yang berkembang dengan pesatnya. Dengan demikian tentu saja akan membuat aplikasi menjadi mudah untuk diintegrasikan.
Nah, salah satu bahasa pemrograman yang dinamis, object-oriented dan mendukung high-level typing kini menyediakan framework untuk membuat aplikasi web dengan mudah. Pyhton kini mampu menjadi jembatandalam menghubungkan kemapuan python dengan teknologi web. Framework itu dinamakan Cherrypy. Framework ini murni pythonic framework sehiungga mudah sekali untuk digabungkan dengan skalabilitas kemmpuan python yang telah teruji di banyak bidang.

python-cherrypy-action.jpg

python-mysql.jpg

login.jpg

idle-python.jpg

Kelebihan Cherrypy
Kemampuan lebih dari bahasa pemrograman banyak menjadi criteria utama pemiolihan bahasapemrograman yang cocok untuk dipakai dalam suatu pekerjaan.Bukan rahasia lagi bahwa framework yang baik adalah yang mendukung konsep MVC sehingga mampu dipisahkan pekerjaan lopgic control dengan desain tampilan. Selain itu tentu saja kemudahan dalam mengabungkan antara logic dengan layer presentyasi/tampilan.Untuk hal ini, cherrypy memberi kita solusinya. Dengan Cherrypy kita dapat membangun system dengan memisahkan desain html tampilan secara bersih. Kita dapat menggunakan Cherrypy template dengan mengakses fungsi renderTemplate secara mudah. Lalu bagaimana dengan database?, jawabannya mudah sekali. Pyhton mendukung system poll sehingga di desain logic program kita tinggal mengkases database sesuai yang kita mau kemudian secara otomatis di poll dan kemudian kita render di html dengan menggunakan tag cherrpytemplate.

Mengapa memoilih Python?
Sekali lagi, pemilihan bahasa pemrograman tidaklah mutlak sesuai untuk semua orang. Namun kita bias lihat dari skalabiulitasnya. Python didukung dengan modul-0modul yang sangat banyak dan bervariasi mulai dari modul sains yang sangat cocok untuk aplkikasi-aplikasi komputasi numeric. Nah, hal yang menarik adalah jika kia bias mengabungkan teknologi online dengan kemampuan tersebut, apa yang terjadi? Sebiuah system yang mampu mengakases low-resource bahkan pekerjaan komputasi yang dapay diakses informasi olahannya secara online.

II. Membuat aplikasi Web
Dalam bab ini kita akan berlatih umntuk membuat aplikasi web lengkap dengan login system dab koneksi database sederhana yang dapat dikembangakn lebih lanjut.
II. Membuat aplikasi Web
Contoh:
import cherrypy
import os
import MySQLdb
from cherrytemplate import renderTemplate

curdir = os.path.join(os.getcwd(), os.path.dirname(__file__))
db=MySQLdb.connect(host=’127.0.0.1′,user=’root’, passwd=’123′, db=’mysql’)
c = db.cursor()

class Page:
_cp_config = {‘tools.sessions.on’: True}
# Store the page title in a class attribute
title = ‘Untitled Page’

def header(self):
return renderTemplate(file=’header.html’)
def footer(self):
return renderTemplate(file=’footer.html’)
def login(self):
return renderTemplate(file=’index.html’)
def body(self):
return renderTemplate(file=’body.html’)

class HomePage(Page):

# MainPage
_cp_config = {‘tools.sessions.on’: True}

def index(self, Password=None, usrname= None):

if ((Password == ‘sasas’)&(usrname==’database’)) :
cherrypy.session[‘user’] = Password

if cherrypy.session.has_key(‘user’):
nama = cherrypy.session.get(‘user’, 0)
if nama == ‘sasas’:

return ”’ Pemakai: %s ”’ % nama + self.header()+self.body()+self.footer()
else:
cherrypy.session.clear()
return self.login()

index.exposed = True

def motor(self, mode=None):
# data poll 1
c.execute(‘SHOW databases’)
data = c.fetchall()
# data poll 2
c.execute(‘SELECT * FROM user’)
user = c.fetchall()
if cherrypy.session.has_key(‘user’):
nama = cherrypy.session.get(‘user’, 0)
if mode == ‘print’:
return renderTemplate(file=’motor.html’)+self.footer()
else:
return ”’Pemakai: %s”’ % nama +self.header()+renderTemplate(file=’motor.html’)+self.footer()
else:
return self.login()

motor.exposed= True

class Logout(Page):
def index(self):
_cp_config = {‘tools.sessions.on’: True}
cherrypy.session.clear()
return self.login()
index.exposed = True

root=HomePage()
root.logout=Logout()

conf = {

‘/script’: {
‘tools.staticdir.on’: True,
‘tools.staticdir.dir’: ‘script’,
‘tools.staticdir.root’: curdir,
}
}

cherrypy.tree.mount(root, config=conf)
cherrypy.config.update(‘tutorial.conf’)
cherrypy.server.quickstart()
cherrypy.engine.start()

Pengarang:
Rohmad Hidayat
IT Division PSEKP UGM

Advertisements

Filed under: Programming

3 Responses

  1. ddo8691 says:

    Salam kenal pak…

    setelah baca article bpk, saya terus download & install.

    Ada problem sedikit, kalau mau tampikan picture di html nya misalnya “<img src=”image.jpg bla ..bla..bla, picture tidak tampil. baik itu pakai browser firefox atau IE. tolong beri penjelasan…

    tks sebelumnya

    note kirim ke email lebih baik..tks.

  2. rohmad says:

    udah dibahas mas….itu masalah staticdir nya, belum di config aja

  3. neoriz says:

    gan saya mau tanya,.. saya sedang membuta aplikasi webservice menggunakan cherrypy, tetapi pada saat ada proses yang sama, kadang terkena segFault atau segmentation fault, bagaimana cara mengatasinya?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: