Repository 32bit  Forum
Repository 64bit  Wiki

Pylons quick reference: differenze tra le versioni

Da Slacky.eu.
(Nuova pagina: = Inizio = == Introduzione == Dopo aver provato nell'ordine mod_python, vampire e Django, ed essere rimasto per vari motivi insoddisfatto di tutti e tre, ho scoperto '''Pylons''' che, ...)
 
m
Riga 1: Riga 1:
  +
[[category:Scritti_misti]]
= Inizio =
= Inizio =
== Introduzione ==
== Introduzione ==

Versione delle 23:02, 11 mag 2008

Indice

Inizio

Introduzione

Dopo aver provato nell'ordine mod_python, vampire e Django, ed essere rimasto per vari motivi insoddisfatto di tutti e tre, ho scoperto Pylons che, secondo me, e' un perfetto equilibrio tra il controllo dell'applicazione e le facilitazioni che il framework mette a disposizione dello sviluppatore.

Infatti il framework non fa altro che riutilizzare i migliori pezzi di altri progetti: Formencode, Routes e i Webhelpers.

Questa vuol essere una breve e concisa guida all'utilizzo del framework.

Installazione

Una volta scompattato il .tar.gz, basta spostarsi nella directory cosi' creata e dare il comando:

# python setup.py install

Il comando installera' i componenti necessari nella directory site-packages delle librerie python.

Inizializzazione di un progetto

Per creare la struttura della directory del progetto, basta dare il comando:

$ paster create -t pylons nomeproj

E possiamo subito dopo lanciare l'applicazione !

$ cd nomeproj
$ paster serve --reload development.ini

Il comando lancia un server WSGI sulla porta 5000, alla quale potremmo collegarci con un qualsiasi browser all'indirizzo http://127.0.0.1:5000. Una volta passato il "test", eliminiamo poi dalla directory public il file index.html.

Sviluppo progetto

Creare un controller

Un controller non e' altro che un modulo python contenente una classe, che "risponde" alla richiesta di una determinata URL. Ogni controller ha uno o piu' action, che non sono altro che metodi della classe stessa. L'action di default, se non specificata, e' il metodo index.

Per la creazione del primo controller della nostra applicazione, dare il comando:

$ paster controller start

Il comando creera' un modulo nella sottodirectory controller/ e uno in test/.

Per visualizzare la "pagina" appena creata, bastera' aprire http://127.0.0.1/start, che mostrera' il classico Hello World. Se vogliamo che questa diventi la nostra pagina di default, dobbiamo variare il file config/routing.py aggiungendo, prima della riga standard, la connect al controller:

     map.connect('', controller='start')
     map.connect(':controller/:action/:id')

Autenticazione

Il metodo piu' semplice per gestire l'autenticazione e' quello di inserire in lib/base.py un metodo __before__ nella classe BaseController, da cui "derivano" tutte le classi controller.

class BaseController(WSGIController):
    requires_auth = False

    def __before__(self):
          if self.requires_auth and 'user' not in session:
                 # remember where we came ...
                 session['path_before_login'] = request.path_info
                 session.save()

                 return redirect_to(h.url_for(controller='login'))

In login.py bastera' autenticare l'user con un form e poi fare il redirect:

           autentica 
          ...
          session['user'] = _res[0]
          session.save()
          if session.get('path_before_login'):
                redirect_to(session['path_before_login'])
          else:
                redirect_to('/')

Nelle classi che richiedono l'autenticazione, bastera' settare

           requires_auth = True
Strumenti personali
Namespace

Varianti