CherryPy
14 July 2008
Comments
CherryPy to framework do tworzenia serwisów www i serwer w jednym. Jest prosty, wydajny i łatwy w nauce :) Nie jest to pełen framework MVC lecz mimo to sporo można w nim zrobić. CherryPy jest elementem większego frameworka - TurboGears. Z drugiej strony CherryPy uważane jest przez część środowiska za projekt niedojżały do zastosowań produkcyjnych (zmienność API, błędy).Hello World wygląda następująco:
import cherrypy
class HelloWorld:
def index(self):
return "Hello world!"
index.exposed = True
cherrypy.root = HelloWorld()
cherrypy.server.start()
import cherrypy
class HelloWorld:
def index(self):
return 'strona główna'
def foo(self):
return 'Podstrona foo'
index.exposed = True
foo.exposed = True
cherrypy.root = HelloWorld()
cherrypy.server.start()
Obsługa formularzy jest dość prosta:
import cherrypy
class HelloWorld:
def index(self, nazwapola=None):
if(nazwapola == None):
return """<form action="index" method="post">
<p>Pole</p>
<input type="text" name="nazwapola" value="" size="15" maxlength="40"/>
<p><input type="submit" value="Wyslij"/></p>
</form>"""
else:
return "Wpisales: " + nazwapola
index.exposed = True
cherrypy.root = HelloWorld()
cherrypy.server.start()
Zmienne można też przesyłać poprzez link korzystając z niepełnego przypisania:
import cherrypy
class HelloWorld:
def index(self, nazwapola=None):
if(nazwapola == None):
return """<form action="index" method="post">
<p>Pole</p>
<input type="text" name="nazwapola" value="" size="15" maxlength="40"/>
<p><input type="submit" value="Wyslij"/></p>
</form>"""
else:
return "Wpisales: " + nazwapola
def default(self, zmienna1, zmienna2):
return "Zmienna1 to: " + zmienna1 + ", a zmienna2 to: " + zmienna2
index.exposed = True
default.exposed = True
cherrypy.root = HelloWorld()
cherrypy.server.start()
Cherrypy może korzystać z pliku konfiguracyjnego. Wystarczy wskazać plik konfiguracyjny dodając przed cherrypy.server.start():
cherrypy.config.update(file="nazwa_pliku_konfiguracyjnego")
Podstawowe dane jakie możemy wprowadzić do pliku konfiguracyjnego to:
[global] server.socketPort = 8000 server.threadPool = 10 sessionFilter.on = True staticFilter.root = "/home/site" [/static] staticFilter.on = True staticFilter.dir = "static"
server.threadPool - określa liczbę nagłówką uruchamianych przez CherryPy
staticFilter.root - określa położenie statycznych elementów (grafika, pliki html itd.)
Można też uruchomić filtry CherryPy, np. dodanie:
[/] encodingFilter.on = True gzipFilter.on = True
RkBlog
Comment article