26 marzo 2007

Esperimenti con Django, parte II

La mia prima miniapplicazione funziona: mostra l'elenco dei guestbook e l'elenco dei messaggi per ogni guestbook presente. Aggiungiamo ora l'inserimento di un nuovo messaggio.
Editiamo quindi il template messaggi.html, aggiungendovi al fondo un semplice form HTML:

[form method="post" action="ins/"]
[fieldset]
[label]Nome:[/label[input type="text" name="nome"][br /]
[label]Email:[/label][input type="text" name="mail"][br /]
[label]Messaggio:[/label][textarea name="msg"][/textarea][br /]
[input type="submit" value="Inserisci"]
[/fieldse][/form]
Notate l'action del form: punta a ins/.
Editiamo quindi il file urls.py, aggiungendo la riga

(r'^guestbook/(?P\d+)/ins/$', 'mysite.guestbook.views.insmessage')

alla variabile urlpatterns.
Ora dobbiamo solo creare la nuova view, dentro a views.py:

def insmessage(request, guestbook_id):
m = Messaggi()
m.autore = request.POST['nome']
m.email = request.POST['mail']
m.messaggio = request.POST['msg']
m.guestbook_id = guestbook_id
m.data = strftime("%Y-%m-%d %H:%M:%S")
m.save()
return HttpResponseRedirect('/guestbook/'+guestbook_id+'/')

Due parole: questa funzione crea un nuovo oggetto di tipo Messaggi (perchè ho chiamato la classe al plurale non me lo spiego), ne setta gli attributi con i dati che arrivano tramite post, attraverso il dictionary POST dell'oggetto HttpRequest, lo salva su db e fa un redirect alla pagina che mostra i messaggi.
Tutto molto semplice, ovviamente esiste anche un dictionary GET per dati in get.

Il sistema di django è molto bello, la separazione tra template, models e views è netta e molto chiara e effettivamente una volta che si prende la mano mi pare che possa essere un ottimo strumento per velocizzare lo sviluppo.

Nessun commento: