SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
Web2py
Web2py
Make the web easier

Davide Marzioni

Linux Day San Severino 2013
About
• Laureato in Ingegneria Informatica e dell'automazione
presso l'università politecnica delle Marche
• Sviluppatore software
• Appassionato di Linux e dell'open source dal 2000

Linux Day San Severino 2013
Sommario
•
•
•
•

L'interazione web
Python
Web2py
Dimostrazioni pratiche

Linux Day San Severino 2013
Interazione web

Linux Day San Severino 2013
Python
•
•
•
•
•
•
•

Sintassi chiara e semplice
Facile da imparare
Orientato agli oggetti
Typing dinamico
Multipiattaforma
Modulare ed estendibile (C, C++, C#, Java, .Net)
Utilizzato come linguaggio di scripting

Python rilasciato da Guido van Rossum in 1991. Il linguaggio è basato
su un modello aperto e sviluppato dalla comunità e gestito dalla
fondazione no-profit Python Software Foundation.
Linux Day San Severino 2013
Python - Chi lo usa

Linux Day San Severino 2013
Python - Comparazione
C#

Python

using System;
namespace HelloWorld
{
class Hello
{
static void Main()
{
System.Console.WriteLine("Hello World!");
}
}

print "Hello World!"

}

Linux Day San Severino 2013
Python - Comparazione
C#

Python

using System;
namespace AddFunction
{
class Program
{
static void Main()
{
int a = 5;
int b = 2;
int c = Add(a, b);
System.Console.WriteLine(
"Il risultato e' {0}", c);
}

}

def Add(x, y):
result = x + y;
return result
a = 5
b = 2
c = Add(a, b)
print "Il risultato e'", c

public int Add(int x, int y)
{
int result = x + y;
return result;
}

}
Linux Day San Severino 2013
Web2py
Free open source full-stack framework
for rapid development of
• fast
• scalable
• secure
• portable
database-driven web-based applications.
Written and programmable in Python.
Linux Day San Severino 2013

http://www.web2py.com
Model - View - Controller
Model
Rappresentazione dei dati
Che dati ho a disposizione, di che tipo sono, ...

View
Presentazione dei dati
Che dati voglio che siano visualizzati e come

Controller
Logica dell'applicazione
Come processo i dati che ho a disposizione

Linux Day San Severino 2013
Flusso dati Web2py

Linux Day San Severino 2013
Applicazione di esempio - Blog
• Creazione di un semplice blog.
• L'applicazione deve poter visualizzare una lista di tutti i
messaggi (post).
• Cliccando sul titolo del messaggio si deve poter vedere
il post in dettaglio (titolo, testo, data di pubblicazione)
• Chi è registrato al sito può inserire un nuovo messaggio.
NOTA:
Le prossime slide non sono una lezione di informatica, ma servono
solo a dimostrare la semplicità e le potenzialità di web2py

Linux Day San Severino 2013
Modello - db.py
db = DAL('sqlite://storage.sqlite', pool_size=1)
from datetime import datetime
from gluon.tools import Auth
auth = Auth(db)
auth.define_tables()
db.define_table('post',
Field('title', 'string'),
Field('content', 'text'),
Field('created_at', 'datetime', default=datetime.now())
)
db.post.title.requires = IS_NOT_EMPTY()
db.post.content.requires = IS_NOT_EMPTY()

Linux Day San Severino 2013
Controllore - default.py
def index():
lista_post = db().select(db.post.ALL)
return dict(lista_post=lista_post)
def view():
post_id = request.args(0)
post = db(db.post.id==post_id).select(db.post.ALL).first()
return dict(post=post)

Linux Day San Severino 2013
Vista - default/index.html
{{extend 'layout.html'}}
{{for post in lista_post:}}
<h2>
{{=A(post['title'], _href=URL('default', 'view',
args=post['id']))}}
</h2>
<h5>
{{=post['created_at']}}
</h5>
<p>
{{=post['content']}}
</p>
<hr />
{{pass}}

Linux Day San Severino 2013
Vista - default/view.html
{{extend 'layout.html'}}
{{=A('Indietro', _href=URL('default', 'index'),
_class='btn')}}
<h1>
{{=post['title']}}
</h1>
<h5>
{{=post['created_at']}}
</h5>
<p>
{{=post['content']}}
</p>

Linux Day San Severino 2013
Vista - default/index.html - 2
{{extend 'layout.html'}}

{{if auth.is_logged_in():}}
{{=A('Nuovo', _href=URL('default', 'new'),
_class='btn')}}
{{pass}}
{{for post in lista_post:}}
<h2>
{{=A(post['title'], _href=URL('default', 'view', args=post['id']))}}
</h2>
<h5>
{{=post['created_at']}}
</h5>
<p>
{{=post['content']}}
</p>
<hr />
{{pass}}

Linux Day San Severino 2013
Controllore - default.py - 2
def index():
lista_post = db().select(db.post.ALL)
return dict(lista_post=lista_post)
def view():
post_id = request.args(0)
post = db(db.post.id==post_id).select(db.post.ALL).first()
return dict(post=post)

@auth.requires_login()
def new():
form = SQLFORM(db.post)
if form.process().accepted:
response.flash = 'Post inserito!'
redirect(URL('default', 'index'))
return dict(form=form)
Linux Day San Severino 2013
Vista - default/new.html
{{extend 'layout.html'}}
{{=form}}

Linux Day San Severino 2013
Conclusione
• Domande?
• Commenti?
• Chiarimenti?

Linux Day San Severino 2013

Weitere ähnliche Inhalte

Ähnlich wie LinuxDay2013 - Web2py: make the web easier

Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
DotNetCampus
 
Presentazione skolelinux
Presentazione skolelinuxPresentazione skolelinux
Presentazione skolelinux
Slogin Coop
 

Ähnlich wie LinuxDay2013 - Web2py: make the web easier (20)

Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
 
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
 
Android base day1
Android base day1Android base day1
Android base day1
 
Modi innovativi per costruire App
Modi innovativi per costruire AppModi innovativi per costruire App
Modi innovativi per costruire App
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
Personal Cloud
Personal CloudPersonal Cloud
Personal Cloud
 
Presentazione skolelinux
Presentazione skolelinuxPresentazione skolelinux
Presentazione skolelinux
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
 
Erlug
ErlugErlug
Erlug
 
Da A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di CognitiveDa A a Bot con un pizzico di Cognitive
Da A a Bot con un pizzico di Cognitive
 
Sviluppo di applicazioni web con Django
Sviluppo di applicazioni web con DjangoSviluppo di applicazioni web con Django
Sviluppo di applicazioni web con Django
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big Data
 
5 - Introduzione al Web (2/2) - 17/18
5 - Introduzione al Web (2/2) - 17/185 - Introduzione al Web (2/2) - 17/18
5 - Introduzione al Web (2/2) - 17/18
 
Tesina Grupposis
Tesina GrupposisTesina Grupposis
Tesina Grupposis
 
Introduzione al web (2/2) - 18/19
Introduzione al web (2/2) - 18/19Introduzione al web (2/2) - 18/19
Introduzione al web (2/2) - 18/19
 
5 - Introduzione al Web (2/2)
5 - Introduzione al Web (2/2)5 - Introduzione al Web (2/2)
5 - Introduzione al Web (2/2)
 

Kürzlich hochgeladen

Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
sasaselvatico
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
nico07fusco
 

Kürzlich hochgeladen (20)

Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opere
 
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 

LinuxDay2013 - Web2py: make the web easier

  • 1. Web2py Web2py Make the web easier Davide Marzioni Linux Day San Severino 2013
  • 2. About • Laureato in Ingegneria Informatica e dell'automazione presso l'università politecnica delle Marche • Sviluppatore software • Appassionato di Linux e dell'open source dal 2000 Linux Day San Severino 2013
  • 4. Interazione web Linux Day San Severino 2013
  • 5. Python • • • • • • • Sintassi chiara e semplice Facile da imparare Orientato agli oggetti Typing dinamico Multipiattaforma Modulare ed estendibile (C, C++, C#, Java, .Net) Utilizzato come linguaggio di scripting Python rilasciato da Guido van Rossum in 1991. Il linguaggio è basato su un modello aperto e sviluppato dalla comunità e gestito dalla fondazione no-profit Python Software Foundation. Linux Day San Severino 2013
  • 6. Python - Chi lo usa Linux Day San Severino 2013
  • 7. Python - Comparazione C# Python using System; namespace HelloWorld { class Hello { static void Main() { System.Console.WriteLine("Hello World!"); } } print "Hello World!" } Linux Day San Severino 2013
  • 8. Python - Comparazione C# Python using System; namespace AddFunction { class Program { static void Main() { int a = 5; int b = 2; int c = Add(a, b); System.Console.WriteLine( "Il risultato e' {0}", c); } } def Add(x, y): result = x + y; return result a = 5 b = 2 c = Add(a, b) print "Il risultato e'", c public int Add(int x, int y) { int result = x + y; return result; } } Linux Day San Severino 2013
  • 9. Web2py Free open source full-stack framework for rapid development of • fast • scalable • secure • portable database-driven web-based applications. Written and programmable in Python. Linux Day San Severino 2013 http://www.web2py.com
  • 10. Model - View - Controller Model Rappresentazione dei dati Che dati ho a disposizione, di che tipo sono, ... View Presentazione dei dati Che dati voglio che siano visualizzati e come Controller Logica dell'applicazione Come processo i dati che ho a disposizione Linux Day San Severino 2013
  • 11. Flusso dati Web2py Linux Day San Severino 2013
  • 12. Applicazione di esempio - Blog • Creazione di un semplice blog. • L'applicazione deve poter visualizzare una lista di tutti i messaggi (post). • Cliccando sul titolo del messaggio si deve poter vedere il post in dettaglio (titolo, testo, data di pubblicazione) • Chi è registrato al sito può inserire un nuovo messaggio. NOTA: Le prossime slide non sono una lezione di informatica, ma servono solo a dimostrare la semplicità e le potenzialità di web2py Linux Day San Severino 2013
  • 13. Modello - db.py db = DAL('sqlite://storage.sqlite', pool_size=1) from datetime import datetime from gluon.tools import Auth auth = Auth(db) auth.define_tables() db.define_table('post', Field('title', 'string'), Field('content', 'text'), Field('created_at', 'datetime', default=datetime.now()) ) db.post.title.requires = IS_NOT_EMPTY() db.post.content.requires = IS_NOT_EMPTY() Linux Day San Severino 2013
  • 14. Controllore - default.py def index(): lista_post = db().select(db.post.ALL) return dict(lista_post=lista_post) def view(): post_id = request.args(0) post = db(db.post.id==post_id).select(db.post.ALL).first() return dict(post=post) Linux Day San Severino 2013
  • 15. Vista - default/index.html {{extend 'layout.html'}} {{for post in lista_post:}} <h2> {{=A(post['title'], _href=URL('default', 'view', args=post['id']))}} </h2> <h5> {{=post['created_at']}} </h5> <p> {{=post['content']}} </p> <hr /> {{pass}} Linux Day San Severino 2013
  • 16. Vista - default/view.html {{extend 'layout.html'}} {{=A('Indietro', _href=URL('default', 'index'), _class='btn')}} <h1> {{=post['title']}} </h1> <h5> {{=post['created_at']}} </h5> <p> {{=post['content']}} </p> Linux Day San Severino 2013
  • 17. Vista - default/index.html - 2 {{extend 'layout.html'}} {{if auth.is_logged_in():}} {{=A('Nuovo', _href=URL('default', 'new'), _class='btn')}} {{pass}} {{for post in lista_post:}} <h2> {{=A(post['title'], _href=URL('default', 'view', args=post['id']))}} </h2> <h5> {{=post['created_at']}} </h5> <p> {{=post['content']}} </p> <hr /> {{pass}} Linux Day San Severino 2013
  • 18. Controllore - default.py - 2 def index(): lista_post = db().select(db.post.ALL) return dict(lista_post=lista_post) def view(): post_id = request.args(0) post = db(db.post.id==post_id).select(db.post.ALL).first() return dict(post=post) @auth.requires_login() def new(): form = SQLFORM(db.post) if form.process().accepted: response.flash = 'Post inserito!' redirect(URL('default', 'index')) return dict(form=form) Linux Day San Severino 2013
  • 19. Vista - default/new.html {{extend 'layout.html'}} {{=form}} Linux Day San Severino 2013
  • 20. Conclusione • Domande? • Commenti? • Chiarimenti? Linux Day San Severino 2013