| Authors: | Gael Pasgrimaud |
|---|---|
| Date: | $Date: 2008-07-2$ |
import web
urls = (
'/(.*)', 'hello'
)
class hello:
def GET(self, name):
if not name: name = 'world'
print 'Hello,', name+'!'
if __name__ == "__main__":
web.run(urls, globals())
La commande:
$ paster controller hello
Devient:
class HelloController(BaseController):
def index(self):
return 'Hello'
Framework complet intégrant une interface d'administration pré-mâchée.
Le lieur de briques.
L'usine. Seule véritable base de données objets.
Aide à la construction d'usine Zope.
Création d'environnement isolé:
$ virtualenv --no-site-packages monprojet
=> Nouveaux binaires python
buildout.cfg:
[buildout] parts=eggs [eggs] recipe=zc.recipe.egg eggs= supervisor PasteScripts Pylons mon.app
=> Modification du PYTHON_PATH
Utilisation de templates:
$ paster create -t basic_package monprojet
setup.py
Développement:
$ python setup.py develop
Release:
$ python setup.py sdist bdist_egg
register upload
entry_points = """ [console_scripts] buildout = zc.buildout.buildout:main [super_points] ... """
Implémentation simple:
def application(environ, start_response):
start_response('200 OK',
[('Content-Type', 'text/html')])
return ['Hello']
Interagit à la fois avec l'application et avec le serveur.
Notification des erreurs de l'application:
class ErrorHandler(object):
def __init__(self, app):
self.application = app
def __call__(environ, start_response):
try:
return self.application(environ,
start_response)
except Exception, e:
# notification de l'admin
...
raise
deploy.ini:
[app:main] use = egg:mon.package#mon_application email = gawel@afpy.org [server:main] use = egg:Paste#http host = 127.0.0.1 port = 5000
Lancement de l'application:
paster serve deploy.ini