Event: Giffoni Open Makers Day 2013
Speaker: Fabrizio Lapiello
Questo talk è strutturato "Step by Step" per presentare in modo semplice ed intuitivo il framework Django, gli step sono incentrati sugli aspetti più appetibili e funzionali del framework fornendo informazioni di base su come utilizzarlo in ambiente Google App Engine.
6. Cos’è Django?
Un ottimo framework per progettare
sviluppare web app di successo.
e
E’ stato progettato per aumentare e migliorare
la produttività nello sviluppo di web app.
www.djangoproject.com
7. MTV - Model Template View
Model
contiene le classi le cui istanze rappresentano i
dati da visualizzare e manipolare.
Template
contiene gli oggetti che controllano e gestiscono
l’interazione dell’utente con i livelli view e model.
View
contiene i metodi usati per visualizzare tramite i
template nella UI i dati contenuti nel model.
13. Creazione di una vista - step 1
Associare prima di tutto un URL alla vista
-> http://127.0.0.1:8000/hello
Aprire il file urls.py e inserire la seguente stringa come ultimo
parametro :
-> (r’^hello/’, “views.hello”)
Espressione
regolare che indica
l’inizio e la fine dell’
url.
Associazione
Url/Vista
14. Creazione di una vista - step 2
La vista non è altro che un metodo Python che restituisce
dei
dati.
Nella root del progetto creiamo il file views.py e inseriamo il
seguente metodo:
from django.http import HttpResponse
def hello(request):
return HttpResponse(“Hello World”)
17. Creazione di applicazioni
E’ buona abitudine strutturare il progetto in sotto-applicazioni in modo da avere maggiore
controllo sull’intero sistema da sviluppare.
$ python manage.py startapp test
Se non ci sono errori dovremmo avere nella root del progetto una cartella di nome “test”
con all’interno i seguenti files
__init__.py
models.py
views.py
Indicare in Installed_Apps nel file settings.py la presenza dell’applicazione “test”
inserendo semplicemente il suo nome tra virgolette in fondo alla lista.
18. Creazione di un Model
Modificare il file models.py nella cartella “test
from django.db import models
class Persona (models.Model):
nome = models.CharField(max_length=50)
cognome = models.CharField(max_length=50)
def __unicode__(self):
return u"%s %s" % (self.nome, self.cognome)
class Meta:
verbose_name_plural ="Persone"
19. Aggiunta di un DB
Modificare il file settings.py nel modo seguente:
DATABASES =
{'default': {
'ENGINE': 'sqlite3', #Nome del dbms es (oracle, mysql etc..)
'NAME': 'test.db', #Nome del db o del percorso
'USER': '', #Nome utente
'PASSWORD': '', #Password'HOST': '', #Indirizzo del dbms
'PORT': '', #Porta
}
}
20. ORM Integrato
“Object-Relational-Mapping”
Un ORM è una sorta di linker tra gli
oggetti e i database relazionali.
Attraverso questo linker gli oggetti creati
con un linguaggio di alto livello vengono
inseriti
nel
database
relazionale.
$ python manage.py syncdb
21. Creazione Pannello di Amministrazione
Aprire il file settings.py ed inserire in Installed_Apps l’
applicazione per il pannello di amministrazione come di seguito.
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.admin',
)
22. Creazione Pannello di Amministrazione
Associare un URL all’applicazione, quindi editare il file urls.py
come di seguito.
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^admin/', include(admin.site.urls)),
(r'^hello/$', "views.hello"),
)
23. Adattiamo i nostri models
from django.contrib import admin
[...]
[...]
admin.site.register(Persona)
26. URL - Uniform Resource Locator
Vantaggi di avere URL “ordinati”
● Facili da ricordare
● Appetibilità da parte dei motori di ricerca
● Durevole nel tempo
Esempio pratico:
1.
http://nomedominio.com/index.php?option=com_content&view=category&layout=blog&id=3&Itemid=17
2.
http://nomedominio.com/blog/
1) ORRIPILANTE - ASSOLUTAMENTE DA SOSTITUIRE
27. Creazione di un URL
In Django la creazione di un URL come il seguente
-> http://127.0.0.1:8000/hello
comporta l’associazione di una vista al suddetto URL quindi,
aprire il file urls.py e inserire la seguente stringa come ultimo
parametro :
-> (r’^persone/’, “views.persone”)
Espressione
regolare che indica
l’inizio e la fine dell’
url.
Associazione
Url/Vista
28. Una View più “complessa”
from django.http import HttpResponse
from accounting.models import *
def persone(request):
elenco = ""
for p in Persona.objects.all():
elenco += "%s %s <br>" % (p.nome, p.cognome)
return HttpResponse(elenco)
32. Perchè e cos’è?
● Piattaforma PaaS
● Facile da utilizzare, facilmente scalabile, traffico e
archivazioni dati proporzionati al crescere dell’
esigenze
● Completamente FREE (senza costi di start-up)
● 1GB di memoria e CPU/Larghezza di banda
sufficienti a servire 5 MILIONI di pagine viste al
mese.
33. You write the code, someone else worries about
everithing else…
…the power of cloud computing!