Pyramid – step 2

Il primo step è:
source env/bin/activate

Se il tutto ha funzionato la shell diventa qualcosa di simile a questo:
(env)pc:progetto user$
D’ora in avanti l’ambiente python utilizzato è quello del virtualenv e non c’è bisogno di eseguire i comandi con il path completo (es. $python invece di $../bin/python).

Fatto partire il server di develop con pserve:
pserve development.ini --reload

Non resta che iniziare a modellare i dati nel file models.py.
Visto che attualmente sto sviluppando il nuovo sito miramuseo modellerò prima un oggetto evento, usando SQLAlchemy a cui dovranno essere aggiunti tanti, troppi fronzoli come commenti twitter e facebook, tag, ed altro…
Fatto questo andrebbero creati i moduli di test (ma non mi va) e poi non resta che fare le viste e le pagine di template per inserire e visualizzare i dati.
Attualmente i template saranno i più scarni e rapidi possibile.

Fortunatamente SQLAlchemy ha un ottima documentazione e un fantastico tutorial.
Creato il modello bisogna ripopolare il database. Come viene spiegato nel wiki di pyramid l’operazione è un rebus insolubile a cui darò risposta dopo pranzo.

Dopo pranzo…

AHAHAHA HO CAPITO!

scripts/populate.py crea uno o più oggetti nel db. È stato sufficiente importare il mio oggetto Event e crearne uno:

  1.     with transaction.manager:
  2.         model = Event(title=‘stocazzo’, slug=‘blabla’)
  3.         DBSession.add(model)

Faccio notare la fantasia nei nomi.

A questo punto basta ridare il comando populate_project e far ripartire il webserver.

La homepage del sito dovrà impaginare magicamente una lunga lista di eventi marcati come “pubblicati”. Per fare ciò la mia vista restituisce una lista di eventi (attualmente tutti quelli presenti nella tabella) e il template li stampa con un ciclo for.

Questo è il pezzo di codice interessante in views.py:

  1. @view_config(route_name=‘home’, renderer=‘templates/home.jinja2’)
  2. def event_list(request):
  3.     events = DBSession.query(Event)
  4.     return {‘events’:events}

E questo è il template, scritto con jinja2, che deve essere installato ed attivato:

  1. <html>
  2.   <body>
  3.     <div>
  4.       <p>These are your events:</p>
  5.       <ul>
  6.         {% for event in events %}
  7.         <li><h1>{{event.title}}</h1><p>{{event.abstract}}</p></li>
  8.         {% endfor %}
  9.         </ul>
  10.     </div>
  11.   </body>
  12. </html>

Per installare jinja2 c’è un bellissimo tutorial nella documentazione di pyramid. In ogni caso basta usare easy_install e aggiungere una riga al file __init__.py.

Il webserver dovrebbe essersi riavviato automaticamente, dopo la modifica di __init__.py e dovrebbe apparire il nostro scurrile evento.

Ora non resta che creare una pagina per creare gli eventi.

Leave a Reply