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

More Related Content

PPTX
Docker Fudamentals
PDF
Using web2py's DAL in other projects or frameworks
PPT
Pamela FELIZ CUMPLEAÑOS
PDF
web2py:Web development like a boss
PDF
Pythonおじさんのweb2py挑戦記
PDF
Modern web development with python and Web2py
PPT
Corso Python Django
PDF
Python per tutti
Docker Fudamentals
Using web2py's DAL in other projects or frameworks
Pamela FELIZ CUMPLEAÑOS
web2py:Web development like a boss
Pythonおじさんのweb2py挑戦記
Modern web development with python and Web2py
Corso Python Django
Python per tutti

Similar to LinuxDay2013 - Web2py: make the web easier (15)

PDF
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
KEY
Twcrashcourse
PDF
Focus Group Open Source 09.05.2011 Giovanni Organtini
PPT
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
PDF
Sviluppo di applicazioni web con Django - - Linux Day 2011
PDF
Drupal - LinuxDay 2010 (Pistoia)
PDF
Drupal - LinuxDay 2010 (Pistoia)
PDF
Foss ieri e oggi
PDF
Unbit djangoday 20120419
PDF
Understanding Linux
PDF
Introduzione a Python e GitHub
PDF
Linux Day 2009 LAMP HowTo
PDF
introduzione a symfony 2
PDF
Coding for Hackers - Linux Day 2016
PPT
I Love Linux - Pawel Zorzan Urban & Bocelli Davide
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
Twcrashcourse
Focus Group Open Source 09.05.2011 Giovanni Organtini
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Sviluppo di applicazioni web con Django - - Linux Day 2011
Drupal - LinuxDay 2010 (Pistoia)
Drupal - LinuxDay 2010 (Pistoia)
Foss ieri e oggi
Unbit djangoday 20120419
Understanding Linux
Introduzione a Python e GitHub
Linux Day 2009 LAMP HowTo
introduzione a symfony 2
Coding for Hackers - Linux Day 2016
I Love Linux - Pawel Zorzan Urban & Bocelli Davide
Ad

Recently uploaded (11)

PDF
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
PPTX
Santa Rosa da Lima, Vergine, Penitente, Terziaria Domenicana 1586-1617.pptx
PDF
PRESENTAZIONE PROGETTO CCCI IN ITALIANO .pdf
PDF
Critico_o_creativo_Approcci_al_testo_let.pdf
PDF
Presentazione su educazione finanziaria e gestione della liquidità
PDF
Libro per insegnare di Balboni: Lingue_e_linguaggi.pdf
PDF
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
PDF
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
PDF
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
PDF
Presentazione di Chimica sui Coloranti Alimentari
PPTX
San Giovanni Eudes, 1601 – 1680, sacerdote e fondatore francese.pptx
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
Santa Rosa da Lima, Vergine, Penitente, Terziaria Domenicana 1586-1617.pptx
PRESENTAZIONE PROGETTO CCCI IN ITALIANO .pdf
Critico_o_creativo_Approcci_al_testo_let.pdf
Presentazione su educazione finanziaria e gestione della liquidità
Libro per insegnare di Balboni: Lingue_e_linguaggi.pdf
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
NGÂN HÀNG CÂU HỎI TÁCH CHỌN LỌC THEO CHUYÊN ĐỀ TỪ ĐỀ THI THỬ TN THPT 2025 TIẾ...
Presentazione di Chimica sui Coloranti Alimentari
San Giovanni Eudes, 1601 – 1680, sacerdote e fondatore francese.pptx
Ad

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