Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Django & Google App Engine: a value composition

523 views

Published on

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.

Published in: Technology
  • Be the first to comment

Django & Google App Engine: a value composition

  1. 1. Django & App Engine a value composition + Fabrizio Lapiello GDG Campania - Group Lead & Founder
  2. 2. Step by step ● ● ● ● ● Introduzione a Django Pennello di amministrazione URL Template App Engine
  3. 3. Step 0 Introduzione a Django
  4. 4. Introduzione a Django ● ● ● ● Il Framework MTV Pattern DBMS Setup ○ Creazione e compilazione ○ Creazione di una view
  5. 5. 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
  6. 6. 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.
  7. 7. DBMS Alcuni dei DBMS più noti ed utilizzati in ambiente django
  8. 8. Conoscenze necessarie ...tutto qui!
  9. 9. Qualche motivo... ...per imparare Python!
  10. 10. Installazione Download: http://www.djangoproject.com/download/ Guida all’installazione: http://docs.djangoproject.com/en/dev/intro/install/ Documentazione ufficiale: http://docs.djangoproject.com/
  11. 11. Creazione e compilazione $ django-admin.py startproject hello $ python manage.py runserver
  12. 12. 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
  13. 13. 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”)
  14. 14. Step 1 Pennello di amministrazione
  15. 15. Pannello di amministrazione ● ● ● ● ● ● Creazione di Applicazioni Creazione di Models Aggiunta di un DB ORM Integrato Creazione Pannello Models
  16. 16. 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.
  17. 17. 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"
  18. 18. 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 } }
  19. 19. 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
  20. 20. 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', )
  21. 21. 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"), )
  22. 22. Adattiamo i nostri models from django.contrib import admin [...] [...] admin.site.register(Persona)
  23. 23. Step 2 URL
  24. 24. Gli URL ● URL ● Creazione di un URL
  25. 25. 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
  26. 26. 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
  27. 27. 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)
  28. 28. Step 3 Template
  29. 29. 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")
  30. 30. Step 4 App Engine
  31. 31. 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.
  32. 32. You write the code, someone else worries about everithing else… …the power of cloud computing!
  33. 33. Launcher
  34. 34. App Engine Dashboard
  35. 35. If I can help you, scan now!

×