TWP65 Desenvolvimento Web Intro.pdf
Transcript of TWP65 Desenvolvimento Web Intro.pdf
![Page 1: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/1.jpg)
Desenvolvimento Web Introdução [email protected]
![Page 2: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/2.jpg)
Requisições e respostas Digito o endereço e aperto enter...
Passo 1: o usuário digita a URL e envia a requisição
Passo2 : o navegador converte a requisição e passa para a internet
Requisição
Uma requisição para mim... Legal!
Passo3 : o servidor Web recebe a requisição e decide o que fazer
Aqui temos duas possibilidades: se a requisição for de um conteúdo estático basta localizá-lo e responder, caso seja um conteúdo dinâmico então devemos gerá-lo
![Page 3: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/3.jpg)
Requisição e resposta Passo4 : o servidor processa a requisição criando uma resposta que vai pela internet até o navegador
Aqui vai a resposta...
resposta
Exatamente o que eu queria!
Possíveis tarefas no passo 4: caso seja um conteúdo dinâmico devo procurar o programa a ser executado, rodar o programa, capturar a saída gerada, que finalmente é enviada.
...
![Page 4: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/4.jpg)
Desenvolvimento Web
• “Python: a única linguagem com mais frameworks web do que keywords”
• Frameworks: Plone, Django, Web2py, Pyramid
• Micro Frameworks: CherryPy, Bottle, Flask
• WSGI (Web Server Gateway Interface)
– Padrões de acesso e comunicação entre servidores Web e aplicações Python
– Não é J2EE ;-)
![Page 5: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/5.jpg)
Web2py
• InfoWorld: best full-stack Python framework • Bossie: Best Open Source Development Software • MVC:
– Modelo: dados – Controladores: regras do negócio – Visões: apresentação
• Autocontido == full-stack framework • Seguro • DAL (Data Access Layer) • Deploy rápido e distribuição fácil
![Page 6: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/6.jpg)
Web2py
• Princípios Python
– DRY – Don’t Repeat Yourself
– Deve existir apenas uma única maneira óbvia de fazer algo
– Explícito é melhor que implícito (não segue)
![Page 7: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/7.jpg)
Hello World
• Habilitar a opção “Não usar servidor proxy para servidores locais”
• web2py.exe no diretório descompactado
• Definir uma senha para administrador
• Clicar em “Administrative Interface”
• Coloque a senha que você definiu
• Três opções: admin, examples e welcome
• Depois iremos aprender a utilizar appliances
![Page 8: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/8.jpg)
Hello World
• Nova aplicação básica: “Hello World”
• Editar o controlador default.py def index():
return "Minha primeira mensagem"
• ctrl+S
• Voltar e clicar no Hello World
![Page 9: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/9.jpg)
Hello World
• Editar novamente o controlador default.py def index():
return dict(msg="FATEC SJC")
• ctrl+S
• Agora vamos editar a visão default/index
![Page 10: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/10.jpg)
Hello World
• Apagar tudo e trocar na visão default/index <html>
<head></head>
<body>
<h1>{{=msg}}</h1>
</body>
</html>
• ctrl+S
![Page 11: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/11.jpg)
Contar visitantes
• Editar controlador default.py def index():
if not session.counter:
session.counter = 1
else:
session.counter += 1
return dict(msg="Python Zumbi",
cont=session.counter)
![Page 12: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/12.jpg)
Contar visitantes
• Visão default/index <html>
<head></head>
<body>
<h1>{{=msg}}</h1>
<h2>Visitantes: {{=cont}}</h2>
</body>
</html>
• Visitantes diferentes possuem contadores diferentes
![Page 13: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/13.jpg)
Duas páginas
• Iremos criar duas páginas
• A primeira solicita o nome em um formulário
• Seremos então redirecionados para a segunda
• A segunda irá dar uma saudação com o nome
![Page 14: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/14.jpg)
Duas páginas
• Incluir no controlador default.py
def primeira():
return dict()
def segunda():
return dict()
![Page 15: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/15.jpg)
Duas páginas
• Criar a visão default/primeira {{extend 'layout.html'}}
Qual é o seu nome?
<form action="segunda">
<input name="nome" />
<input type="submit" />
</form>
![Page 16: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/16.jpg)
Duas páginas
• Criar a visão default/segunda
{{extend 'layout.html'}}
<h1>Olá {{=request.vars.nome}}</h1>
![Page 17: TWP65 Desenvolvimento Web Intro.pdf](https://reader034.fdocuments.net/reader034/viewer/2022050723/5695d3471a28ab9b029d5f29/html5/thumbnails/17.jpg)
Appliances
• http://www.web2py.com/appliances
• Email Contact Form
• Sudoku Solver
• Train Counter Game
• Quiz Builder
• EcardsOnMap (é grande...)