SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Criandeiros
Trabalhando com as views do Web2py
Who Am I?
● Hugo Leonardo Costa e Silva
● Apaixonado por desenvolvimento de software, DevOps e
novas tecnologias
● Trabalho com desenvolvimento de software a mais quatro
anos
● Trabalho com PHP, Python, Javascript
● Entusiasta e autodidata
Web2Py: Views
O propósito de uma view é incluir código Python no HTML.
No geral isso pode ocasionar alguns problemas.
● Como o código incluído no HTML deve ser escapado?
● A indentação deve ser baseada nas regras do Python ou do
HTML?
Web2Py: Views
O Web2Py usa {{ }} para separar o código
Python do HTML.
A indentação deve seguir as regras do HTML.
O código Python é executável mesmo sem
indentação.
Web2Py: Views
Sintaxe Básica
● A marcação para escape é feita dentro de {{ e }}
● Blocos de código começam nas linhas com {{ }} e terminadas em :
● Blocos de código terminam onde encontram a instrução {{pass}}
● Nos casos em que a construção do bloco for clara, não será preciso
usar o {{pass}}
● A linguagem de template do Web2Py suporta todas as estruturas de
controle do Python
Web2Py: Views
Sintaxe Básica
<html>
<body>
{{for x in range(10):}}
{{=x}} hello <br />
{{pass}}
</body>
</html>
Web2Py: Views
Estruturas de controle
● for...in
{{ itens = ['a', 'b', 'c'] }}
<ul>
{{for item in itens:}}<li>{{=item}}</li>{{pass}}
</ul>
Web2Py: Views
Estruturas de controle
● while
{{k = 3}}
<ul>
{{while k > 0:}}
<li>{{=k}}{{k = k – 1}}</li>
{{pass}}
</ul>
Web2Py: Views
Estruturas de controle
● If … elif … else
<h2>
{{=k}}
{{if k % 2:}} é par {{else:}} é ímpar {{pass}}
</h2>
Web2Py: Views
Tratamento de exceção
{{ try: }}
Hello {{= 10 / 0}}
{{ except: }}
Divisão por zero
{{ else: }}
Operação Ok.
{{ finally }}
<br />
{{ pass }}
Web2Py: Views
Definição de função
● A linguagem de template do web2py
permite ao desenvolvedor a definir e
implementar funções que podem retornar
qualquer objeto Python ou string de
texto/html.
Web2Py: Views
Definição de função
{{ def SBUTTON(texto):
return BUTTON(texto, _class="btn btn-success")}}
<div>
{{=SBUTTON("Sucesso")}}
{{=WBUTTON("Warning")}}
{{=DBUTTON("Danger")}}
</div>
Web2Py: Views
HTML Helpers
● Os helpers de HTML são objetos que nos
auxiliam na construção do HTML
● O esquema de helpers no web2py é muito mais
que um sistema de geração de HTML sem a
necessidade de concatenar string. Ele prove
uma representação do DOM no lado do
servidor.
Web2Py: Views
Alguns helpers do Web2Py
● A, B, BEAUTIFY, BODY, BR, CAT, CENTER, CODE,
COL, COLGROUP, DIV, EM, EMBED, FIELDSET,
FORM, H1, H2, H3, H4, H5, H6, HEAD, HR, HTML, I,
IFRAME, IMG, INPUT, LABEL, LEGEND, LI,
LINK, MARKMIN, MENU, META, OBJECT, ON, OL,
OPTGROUP, OPTION, P, PRE, SCRIPT, SELECT,
SPAN, STYLE, TABLE, TAG, TBODY, TD, TEXTAREA,
TFOOT, TH, THEAD, TITLE, TR, TT, UL, URL,
XHTML, XML, embed64, xmlescape
Web2Py: Views
Exemplos de uso
{{=DIV(B(I("hello ", "<world>"))), _class="myclass")}}
Resultado:
<div class="myclass"><b><i>hello &lt;world&gt;</i></b></div>
{{=DIV('text', _data-role='collapsible')}}
Resultado:
<div data-role="collapsible">text</div>
Web2Py: Views
Built-in helpers
{{=A('Clique Aqui', callback=URL('myaction'))}}
{{=A('Ver resultado', callback=URL('resultado'), target="retorno")}}
{{=DIV(_id="retorno")}}
{{=A('Click Aqui', callback=URL('myaction'), delete="tr")}}
Web2Py: Views
BEAUTIFY
BEAUTIFY é usado para criar representações
de objetos compostos em HTML incluindo
listas tuplas e dicionários.
{{=BEAUTIFY({"a": ["Hugo", XML("Leonardo")], "b": (1, 2)})}}
Web2Py: Views
Parser do DOM no servidor
O helper DIV e todos os seus derivados fornecem
métodos de pesquisa de elementos.
O element retorna o primeiro elemento filho especificado
do termo de busca ou None se caso não for encontrado.
O elements retorna todos os elementos
Web2Py: Views
Parser do DOM no servidor
Exemplo:
divs = DIV(DIV(DIV('div','alvo', _id='alvo',_class='alvo')))
divs.elements('div#alvo')
d[0][0] = 'elemento'
print divs
Web2Py: Views
O Parsing
O Objeto TAG é também um parser XML/HTML.
Ele permite a leitura e conversão de strings em uma
árvore de estrutura de helpers.
html = '<h3>Teste do <b>parser</b></h3>'
parsed_html = TAG(html)
parsed_html.element('b')[0]='parsing'
print parsed_html
Web2Py: Views
O Layout
As views podem estender e incluir outras views em sua
estrutura.
Por exemplo podemos fazer com que a view “index.html”
estenda a view “layout.html” e inclua a view “body.html”.
E ao mesmo tempo o “layout.html” incluir o “header.html” e
o “footer.html”.
Web2Py: Views
Exemplo:
index.html
{{extend 'layout.html'}}
{{include 'body.html'}}
layout.html
{{include 'header.html'}}
{{include}}
{{include 'foorter.html'}}
Web2Py: Views
Funções na view
<html>
<body>
{{include}}
<div class="sidebar">
{{if 'menulateral' in globals():}}{{menulateral()}}{{else:}}
menu padrão
{{pass}}
</div>
</body>
</html>
Web2Py: Views
E na view estendida...
{{def menulateral():}}
<ul><li><a href=”#home”>Home</a></li></ul>
{{return}}
{{extend 'layout.html'}}
Web2Py: Views
Blocos nas views
<html>
<body>
{{include}}
<div class="menulateral">
{{block menulateral}}
Menu lateral padrão
{{end}}
</div>
</body>
</html>
Web2Py: Views
E na view estendida...
{{extend 'layout.html'}}
{{block menulateral}}
Outro menu lateral
{{end}}
Web2Py: Views
E isso é tudo pessoal.
Contatos:
Twitter: @hugoleodev, @pythonair
Facebook: hugoleodev, PythOnAir
E-mail: hugoleodev@gmail.com
Github: hugoleodev

Mais conteúdo relacionado

Mais procurados

As novidades do PHP5 (2005)
As novidades do PHP5 (2005)As novidades do PHP5 (2005)
As novidades do PHP5 (2005)Pablo Dall'Oglio
 
Clean Code e Object Calisthenics - Aplicados no PHP
Clean Code e Object Calisthenics - Aplicados no PHPClean Code e Object Calisthenics - Aplicados no PHP
Clean Code e Object Calisthenics - Aplicados no PHPRafael Neris
 
Java introdução ao eclipse
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipseArmando Daniel
 
FLTK Summer Course - Part II - Second Impact
FLTK Summer Course - Part II - Second ImpactFLTK Summer Course - Part II - Second Impact
FLTK Summer Course - Part II - Second ImpactMichel Alves
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#Felipe Pimentel
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphiHelder Lopes
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dadosSérgio Souza Costa
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixLidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixEmmanuel Neri
 
Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013Pablo Dall'Oglio
 

Mais procurados (20)

Java script - funções
Java script - funçõesJava script - funções
Java script - funções
 
As novidades do PHP5 (2005)
As novidades do PHP5 (2005)As novidades do PHP5 (2005)
As novidades do PHP5 (2005)
 
Java script aula 02 - operadores
Java script   aula 02 - operadoresJava script   aula 02 - operadores
Java script aula 02 - operadores
 
Vraptor
VraptorVraptor
Vraptor
 
Clean Code e Object Calisthenics - Aplicados no PHP
Clean Code e Object Calisthenics - Aplicados no PHPClean Code e Object Calisthenics - Aplicados no PHP
Clean Code e Object Calisthenics - Aplicados no PHP
 
Java introdução ao eclipse
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipse
 
Programação Orientada por Objectos - Aula 6
Programação Orientada por Objectos - Aula 6Programação Orientada por Objectos - Aula 6
Programação Orientada por Objectos - Aula 6
 
FLTK Summer Course - Part II - Second Impact
FLTK Summer Course - Part II - Second ImpactFLTK Summer Course - Part II - Second Impact
FLTK Summer Course - Part II - Second Impact
 
Java script aula 08 - formulários
Java script   aula 08 - formuláriosJava script   aula 08 - formulários
Java script aula 08 - formulários
 
Solid
SolidSolid
Solid
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
 
PHP 7
PHP 7PHP 7
PHP 7
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphi
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dados
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Java 06
Java 06Java 06
Java 06
 
Java script aula 09 - JQuery
Java script   aula 09 - JQueryJava script   aula 09 - JQuery
Java script aula 09 - JQuery
 
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixLidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
 
Javascript
JavascriptJavascript
Javascript
 
Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013
 

Destaque

Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyGilson Filho
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyRelsi Maron
 
Persistência de Objetos em Java
Persistência de Objetos em JavaPersistência de Objetos em Java
Persistência de Objetos em Javaarmeniocardoso
 
Curso de web2py - Apresentação
Curso de web2py - ApresentaçãoCurso de web2py - Apresentação
Curso de web2py - ApresentaçãoJúlia Rizza
 
Yes We Can do I.T. - Pyladies Recife
Yes We Can do I.T. - Pyladies RecifeYes We Can do I.T. - Pyladies Recife
Yes We Can do I.T. - Pyladies RecifeAndreza Leite
 
Criando websites a jato com Django
Criando websites a jato com DjangoCriando websites a jato com Django
Criando websites a jato com DjangoMarcos Petry
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosRodrigo Nossal
 

Destaque (7)

Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2py
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
Persistência de Objetos em Java
Persistência de Objetos em JavaPersistência de Objetos em Java
Persistência de Objetos em Java
 
Curso de web2py - Apresentação
Curso de web2py - ApresentaçãoCurso de web2py - Apresentação
Curso de web2py - Apresentação
 
Yes We Can do I.T. - Pyladies Recife
Yes We Can do I.T. - Pyladies RecifeYes We Can do I.T. - Pyladies Recife
Yes We Can do I.T. - Pyladies Recife
 
Criando websites a jato com Django
Criando websites a jato com DjangoCriando websites a jato com Django
Criando websites a jato com Django
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutos
 

Semelhante a Trabalhando com as views do Web2Py

User Interface (in portuguese)
User Interface (in portuguese)User Interface (in portuguese)
User Interface (in portuguese)Bruno Pedro
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Luis Gustavo Almeida
 
Desenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPDesenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPMarcelo Andrade
 
Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Rafael Sales Pavarina
 
Dependency injection WTF? - PHPSC Conference 2012
Dependency injection WTF? - PHPSC Conference 2012Dependency injection WTF? - PHPSC Conference 2012
Dependency injection WTF? - PHPSC Conference 2012Luís Cobucci
 
Apostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfvApostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfverickrodrigo23
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitFlávio Lisboa
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonGuilherme Garcia
 
TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresTDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresFernando Franquini
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Rodrigo Urubatan
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Alexandre Tarifa
 

Semelhante a Trabalhando com as views do Web2Py (20)

User Interface (in portuguese)
User Interface (in portuguese)User Interface (in portuguese)
User Interface (in portuguese)
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017
 
Desenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPDesenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHP
 
Apache Wicket
Apache WicketApache Wicket
Apache Wicket
 
Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018
 
Dependency injection WTF? - PHPSC Conference 2012
Dependency injection WTF? - PHPSC Conference 2012Dependency injection WTF? - PHPSC Conference 2012
Dependency injection WTF? - PHPSC Conference 2012
 
Apostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfvApostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfv
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo Toolkit
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e Python
 
TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresTDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
Python 08
Python 08Python 08
Python 08
 
Hello vue
Hello vueHello vue
Hello vue
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
 
jQuery e ASP.Net mvc2
jQuery e ASP.Net mvc2jQuery e ASP.Net mvc2
jQuery e ASP.Net mvc2
 
ApresentaçãO Mvc
ApresentaçãO MvcApresentaçãO Mvc
ApresentaçãO Mvc
 
Apresentação M V C
Apresentação M V CApresentação M V C
Apresentação M V C
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
 

Trabalhando com as views do Web2Py

  • 2. Who Am I? ● Hugo Leonardo Costa e Silva ● Apaixonado por desenvolvimento de software, DevOps e novas tecnologias ● Trabalho com desenvolvimento de software a mais quatro anos ● Trabalho com PHP, Python, Javascript ● Entusiasta e autodidata
  • 3. Web2Py: Views O propósito de uma view é incluir código Python no HTML. No geral isso pode ocasionar alguns problemas. ● Como o código incluído no HTML deve ser escapado? ● A indentação deve ser baseada nas regras do Python ou do HTML?
  • 4. Web2Py: Views O Web2Py usa {{ }} para separar o código Python do HTML. A indentação deve seguir as regras do HTML. O código Python é executável mesmo sem indentação.
  • 5. Web2Py: Views Sintaxe Básica ● A marcação para escape é feita dentro de {{ e }} ● Blocos de código começam nas linhas com {{ }} e terminadas em : ● Blocos de código terminam onde encontram a instrução {{pass}} ● Nos casos em que a construção do bloco for clara, não será preciso usar o {{pass}} ● A linguagem de template do Web2Py suporta todas as estruturas de controle do Python
  • 6. Web2Py: Views Sintaxe Básica <html> <body> {{for x in range(10):}} {{=x}} hello <br /> {{pass}} </body> </html>
  • 7. Web2Py: Views Estruturas de controle ● for...in {{ itens = ['a', 'b', 'c'] }} <ul> {{for item in itens:}}<li>{{=item}}</li>{{pass}} </ul>
  • 8. Web2Py: Views Estruturas de controle ● while {{k = 3}} <ul> {{while k > 0:}} <li>{{=k}}{{k = k – 1}}</li> {{pass}} </ul>
  • 9. Web2Py: Views Estruturas de controle ● If … elif … else <h2> {{=k}} {{if k % 2:}} é par {{else:}} é ímpar {{pass}} </h2>
  • 10. Web2Py: Views Tratamento de exceção {{ try: }} Hello {{= 10 / 0}} {{ except: }} Divisão por zero {{ else: }} Operação Ok. {{ finally }} <br /> {{ pass }}
  • 11. Web2Py: Views Definição de função ● A linguagem de template do web2py permite ao desenvolvedor a definir e implementar funções que podem retornar qualquer objeto Python ou string de texto/html.
  • 12. Web2Py: Views Definição de função {{ def SBUTTON(texto): return BUTTON(texto, _class="btn btn-success")}} <div> {{=SBUTTON("Sucesso")}} {{=WBUTTON("Warning")}} {{=DBUTTON("Danger")}} </div>
  • 13. Web2Py: Views HTML Helpers ● Os helpers de HTML são objetos que nos auxiliam na construção do HTML ● O esquema de helpers no web2py é muito mais que um sistema de geração de HTML sem a necessidade de concatenar string. Ele prove uma representação do DOM no lado do servidor.
  • 14. Web2Py: Views Alguns helpers do Web2Py ● A, B, BEAUTIFY, BODY, BR, CAT, CENTER, CODE, COL, COLGROUP, DIV, EM, EMBED, FIELDSET, FORM, H1, H2, H3, H4, H5, H6, HEAD, HR, HTML, I, IFRAME, IMG, INPUT, LABEL, LEGEND, LI, LINK, MARKMIN, MENU, META, OBJECT, ON, OL, OPTGROUP, OPTION, P, PRE, SCRIPT, SELECT, SPAN, STYLE, TABLE, TAG, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TITLE, TR, TT, UL, URL, XHTML, XML, embed64, xmlescape
  • 15. Web2Py: Views Exemplos de uso {{=DIV(B(I("hello ", "<world>"))), _class="myclass")}} Resultado: <div class="myclass"><b><i>hello &lt;world&gt;</i></b></div> {{=DIV('text', _data-role='collapsible')}} Resultado: <div data-role="collapsible">text</div>
  • 16. Web2Py: Views Built-in helpers {{=A('Clique Aqui', callback=URL('myaction'))}} {{=A('Ver resultado', callback=URL('resultado'), target="retorno")}} {{=DIV(_id="retorno")}} {{=A('Click Aqui', callback=URL('myaction'), delete="tr")}}
  • 17. Web2Py: Views BEAUTIFY BEAUTIFY é usado para criar representações de objetos compostos em HTML incluindo listas tuplas e dicionários. {{=BEAUTIFY({"a": ["Hugo", XML("Leonardo")], "b": (1, 2)})}}
  • 18. Web2Py: Views Parser do DOM no servidor O helper DIV e todos os seus derivados fornecem métodos de pesquisa de elementos. O element retorna o primeiro elemento filho especificado do termo de busca ou None se caso não for encontrado. O elements retorna todos os elementos
  • 19. Web2Py: Views Parser do DOM no servidor Exemplo: divs = DIV(DIV(DIV('div','alvo', _id='alvo',_class='alvo'))) divs.elements('div#alvo') d[0][0] = 'elemento' print divs
  • 20. Web2Py: Views O Parsing O Objeto TAG é também um parser XML/HTML. Ele permite a leitura e conversão de strings em uma árvore de estrutura de helpers. html = '<h3>Teste do <b>parser</b></h3>' parsed_html = TAG(html) parsed_html.element('b')[0]='parsing' print parsed_html
  • 21. Web2Py: Views O Layout As views podem estender e incluir outras views em sua estrutura. Por exemplo podemos fazer com que a view “index.html” estenda a view “layout.html” e inclua a view “body.html”. E ao mesmo tempo o “layout.html” incluir o “header.html” e o “footer.html”.
  • 22. Web2Py: Views Exemplo: index.html {{extend 'layout.html'}} {{include 'body.html'}} layout.html {{include 'header.html'}} {{include}} {{include 'foorter.html'}}
  • 23. Web2Py: Views Funções na view <html> <body> {{include}} <div class="sidebar"> {{if 'menulateral' in globals():}}{{menulateral()}}{{else:}} menu padrão {{pass}} </div> </body> </html>
  • 24. Web2Py: Views E na view estendida... {{def menulateral():}} <ul><li><a href=”#home”>Home</a></li></ul> {{return}} {{extend 'layout.html'}}
  • 25. Web2Py: Views Blocos nas views <html> <body> {{include}} <div class="menulateral"> {{block menulateral}} Menu lateral padrão {{end}} </div> </body> </html>
  • 26. Web2Py: Views E na view estendida... {{extend 'layout.html'}} {{block menulateral}} Outro menu lateral {{end}}
  • 27. Web2Py: Views E isso é tudo pessoal. Contatos: Twitter: @hugoleodev, @pythonair Facebook: hugoleodev, PythOnAir E-mail: hugoleodev@gmail.com Github: hugoleodev