SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
Django & App Engine a value
composition

+
Fabrizio Lapiello
GDG Campania - Group Lead & Founder
Step by step
●
●
●
●
●

Introduzione a Django
Pennello di amministrazione
URL
Template
App Engine
Step 0
Introduzione a Django
Introduzione a Django
●
●
●
●

Il Framework
MTV Pattern
DBMS
Setup
○ Creazione e compilazione
○ Creazione di una view
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
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.
DBMS
Alcuni dei DBMS più noti ed utilizzati in ambiente django
Conoscenze necessarie

...tutto qui!
Qualche motivo...
...per imparare Python!
Installazione
Download:
http://www.djangoproject.com/download/
Guida all’installazione:
http://docs.djangoproject.com/en/dev/intro/install/
Documentazione ufficiale:
http://docs.djangoproject.com/
Creazione e compilazione
$ django-admin.py startproject hello
$ python manage.py runserver
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
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”)
Step 1
Pennello di amministrazione
Pannello di amministrazione
●
●
●
●
●
●

Creazione di Applicazioni
Creazione di Models
Aggiunta di un DB
ORM Integrato
Creazione Pannello
Models
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.
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"
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
}
}
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
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',
)
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"),
)
Adattiamo i nostri models
from django.contrib import admin
[...]
[...]
admin.site.register(Persona)
Step 2
URL
Gli URL
● URL
● Creazione di un URL
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
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
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)
Step 3
Template
Un semplice template
VIEW
from django.http import HttpResponse

TEMPLATE
<h3> Dati Personali </h3>

from django.shortcuts import render_to_response

<b>Nome:</b> {{ nome }}<br>

from django.template import Context,RequestContext

<b>Cognome:</b> {{ cognome }}

def Trova(request, n):
try:
p = Persona.objects.get(nome = n)
c = Context()
c['nome']=p.nome
c['cognome']=p.cognome
return render_to_response(template.html', c,
context_instance=RequestContext(request))
except:
return HttpResponse("Persona non trovata")
Step 4
App Engine
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.
You write the code, someone else worries about
everithing else…

…the power of cloud computing!
Launcher
App Engine Dashboard
If I can help you, scan now!

Mais conteúdo relacionado

Semelhante a Django & Google App Engine: a value composition

Sviluppare plugin per WordPress: Best Practice e Silver Bullet
Sviluppare plugin per WordPress: Best Practice e Silver BulletSviluppare plugin per WordPress: Best Practice e Silver Bullet
Sviluppare plugin per WordPress: Best Practice e Silver Bullet
Luca Bartoli
 
Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockout
DotNetCampus
 

Semelhante a Django & Google App Engine: a value composition (20)

Sviluppare moduli per il client web
Sviluppare moduli per il client webSviluppare moduli per il client web
Sviluppare moduli per il client web
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
AngularJS-Intro
AngularJS-IntroAngularJS-Intro
AngularJS-Intro
 
Tech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non soloTech Webinar: Test e2e per AngularJS e non solo
Tech Webinar: Test e2e per AngularJS e non solo
 
Laravel Framework PHP
Laravel Framework PHPLaravel Framework PHP
Laravel Framework PHP
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita felice
 
Sviluppo di applicazioni web con Django
Sviluppo di applicazioni web con DjangoSviluppo di applicazioni web con Django
Sviluppo di applicazioni web con Django
 
Enterprise Applications - Angular Day 2018
Enterprise Applications - Angular Day 2018Enterprise Applications - Angular Day 2018
Enterprise Applications - Angular Day 2018
 
Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.js
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the Web
 
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
 
Drupal 8 - dal download del core alla pubblicazione in produzione
Drupal 8 - dal download del core alla pubblicazione in produzioneDrupal 8 - dal download del core alla pubblicazione in produzione
Drupal 8 - dal download del core alla pubblicazione in produzione
 
Sviluppare plugin per WordPress: Best Practice e Silver Bullet
Sviluppare plugin per WordPress: Best Practice e Silver BulletSviluppare plugin per WordPress: Best Practice e Silver Bullet
Sviluppare plugin per WordPress: Best Practice e Silver Bullet
 
Corso angular js componenti
Corso angular js componentiCorso angular js componenti
Corso angular js componenti
 
Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8
 
Creazione componenti con Vue js
Creazione componenti con Vue jsCreazione componenti con Vue js
Creazione componenti con Vue js
 
SEO: Search Engine Optimization & Cloud computing
SEO: Search Engine Optimization & Cloud computingSEO: Search Engine Optimization & Cloud computing
SEO: Search Engine Optimization & Cloud computing
 
Corso angular js base
Corso angular js baseCorso angular js base
Corso angular js base
 
Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockout
 
Drupal diventa un CMF e WordPress che fa? Slide WordCamp Milano 2019
Drupal diventa un CMF e WordPress che fa? Slide WordCamp Milano 2019Drupal diventa un CMF e WordPress che fa? Slide WordCamp Milano 2019
Drupal diventa un CMF e WordPress che fa? Slide WordCamp Milano 2019
 

Mais de Open Makers Italy

Mais de Open Makers Italy (18)

GoogleIO Extended Campania
GoogleIO Extended CampaniaGoogleIO Extended Campania
GoogleIO Extended Campania
 
Arduino e stampa 3d: le nuove frontiere della robotica homemade
Arduino e stampa 3d: le nuove frontiere della robotica homemadeArduino e stampa 3d: le nuove frontiere della robotica homemade
Arduino e stampa 3d: le nuove frontiere della robotica homemade
 
Arduino e stampa 3D - Le nuove frontiere della robotica homemade
Arduino e stampa 3D - Le nuove frontiere della robotica homemadeArduino e stampa 3D - Le nuove frontiere della robotica homemade
Arduino e stampa 3D - Le nuove frontiere della robotica homemade
 
Open Makers Italy - Company profile
Open Makers Italy - Company profileOpen Makers Italy - Company profile
Open Makers Italy - Company profile
 
Cyclomatic: un datalogger per bicicletta con Arduino
Cyclomatic: un datalogger per bicicletta con ArduinoCyclomatic: un datalogger per bicicletta con Arduino
Cyclomatic: un datalogger per bicicletta con Arduino
 
Frankenstein printer: dalla discarica al CNC
Frankenstein printer: dalla discarica al CNCFrankenstein printer: dalla discarica al CNC
Frankenstein printer: dalla discarica al CNC
 
Lua e MOAI SDK: sviluppiamo videogames!
Lua e MOAI SDK: sviluppiamo videogames!Lua e MOAI SDK: sviluppiamo videogames!
Lua e MOAI SDK: sviluppiamo videogames!
 
HySolarKit - Solar Hybridization of Conventional Vehicles
HySolarKit - Solar Hybridization of Conventional Vehicles HySolarKit - Solar Hybridization of Conventional Vehicles
HySolarKit - Solar Hybridization of Conventional Vehicles
 
Geecom: il nuovo CMS open source
Geecom: il nuovo CMS open sourceGeecom: il nuovo CMS open source
Geecom: il nuovo CMS open source
 
Android-Arduino interaction via Bluetooth
Android-Arduino interaction via BluetoothAndroid-Arduino interaction via Bluetooth
Android-Arduino interaction via Bluetooth
 
Primi passi con la scheda BeagleBone Black
Primi passi con la scheda BeagleBone BlackPrimi passi con la scheda BeagleBone Black
Primi passi con la scheda BeagleBone Black
 
Hands on Embedded Linux with BeagleBone Black
Hands on Embedded Linux with BeagleBone BlackHands on Embedded Linux with BeagleBone Black
Hands on Embedded Linux with BeagleBone Black
 
Geecom, nascita di un progetto open source
Geecom, nascita di un progetto open sourceGeecom, nascita di un progetto open source
Geecom, nascita di un progetto open source
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Making in action: facciamo il caffè con Android e Arduino
Making in action: facciamo il caffè con Android e ArduinoMaking in action: facciamo il caffè con Android e Arduino
Making in action: facciamo il caffè con Android e Arduino
 
Email 4 blackout
Email 4 blackoutEmail 4 blackout
Email 4 blackout
 
BACS platform
BACS platformBACS platform
BACS platform
 
OpenStreetMap: costruiamo una mappa libera
OpenStreetMap: costruiamo una mappa liberaOpenStreetMap: costruiamo una mappa libera
OpenStreetMap: costruiamo una mappa libera
 

Django & Google App Engine: a value composition

  • 1.
  • 2. Django & App Engine a value composition + Fabrizio Lapiello GDG Campania - Group Lead & Founder
  • 3. Step by step ● ● ● ● ● Introduzione a Django Pennello di amministrazione URL Template App Engine
  • 5. Introduzione a Django ● ● ● ● Il Framework MTV Pattern DBMS Setup ○ Creazione e compilazione ○ Creazione di una view
  • 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.
  • 8. DBMS Alcuni dei DBMS più noti ed utilizzati in ambiente django
  • 12. Creazione e compilazione $ django-admin.py startproject hello $ python manage.py runserver
  • 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”)
  • 15. Step 1 Pennello di amministrazione
  • 16. Pannello di amministrazione ● ● ● ● ● ● Creazione di Applicazioni Creazione di Models Aggiunta di un DB ORM Integrato Creazione Pannello Models
  • 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)
  • 25. Gli URL ● URL ● Creazione di un URL
  • 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)
  • 30. Un semplice template VIEW from django.http import HttpResponse TEMPLATE <h3> Dati Personali </h3> from django.shortcuts import render_to_response <b>Nome:</b> {{ nome }}<br> from django.template import Context,RequestContext <b>Cognome:</b> {{ cognome }} def Trova(request, n): try: p = Persona.objects.get(nome = n) c = Context() c['nome']=p.nome c['cognome']=p.cognome return render_to_response(template.html', c, context_instance=RequestContext(request)) except: return HttpResponse("Persona non trovata")
  • 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!
  • 36. If I can help you, scan now!