HTML
Criando conteúdo para os navegadores
26 de Setembro de 2012
Slide 2
Slide 2 text
Interface para humanos
API
Slide 3
Slide 3 text
HTML
É uma linguagem de marcação utilizada para criar
interfaces gráficas pelo navegador. Define blocos
de construção de elementos visuais, como
imagens , formularios entre
outros.
Slide 4
Slide 4 text
CSS
É uma linguagem para aplicação de estilos em
documentos HTML, isto é, mudar sua aparência
visual, através da mudança dos atributos como
cor de fundo background-color, tipo de fonte
font-style, cor color, bordas border, etc.
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
Arquivos estáticos
São os arquivos de apoio utilizados para alterar a
aparência do site, ou um conteúdo que não muda,
como imagens, vídeos, CSS e até mesmo HTML.
Slide 7
Slide 7 text
Estendendo o servidor
Vamos criar uma pasta para arquivos estativos
chamada static .
imt-webapp/
static/
Slide 8
Slide 8 text
Servindo arquivos estáticos
Faça download e adicione o arquivo static.py ao
projeto.
http://bit.ly/imt-static
Slide 9
Slide 9 text
Criando a rota
from static import StaticHandler
routes = [
# ...,
('/static/(.+)', StaticHandler),
]
servidor.py
Slide 10
Slide 10 text
Arquivos estáticos
Crie dois arquivos index.html e estilo.css e teste se
eles estão sendo servidos corretamente.
Slide 11
Slide 11 text
Estrutura padrão
Título da página
Slide 12
Slide 12 text
Vinculando um HTML ao CSS
Título da página
Slide 13
Slide 13 text
O Layout
Slide 14
Slide 14 text
Header
.breadcrumb .col-1 .col-2
#03A9F4 #ECECEC
#FFFFFF #000000
300px
30px
15px
Slide 15
Slide 15 text
Footer
#999999
30px
Slide 16
Slide 16 text
Navegação
#03A9F4 #000000
Slide 17
Slide 17 text
Conteúdo
Slide 18
Slide 18 text
Google Maps Static API
Slide 19
Slide 19 text
Gerando uma imagem pela URL
https://developers.google.com/maps/documentation/staticmaps/
Slide 20
Slide 20 text
Gerando mapas
Slide 21
Slide 21 text
Caminhos
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
Estático vs. Dinâmico
Vimos que os arquivos estáticos são aqueles que
não mudam com frequencia.
Porém, há vezes que queremo exibir dados do
banco de dados. Para os arquivos que são gerados
pelo servidor em tempo real chamamos de
arquivos dinâmicos.
Slide 25
Slide 25 text
Arquivos dinâmicos
A imagem gerada pelo Google Maps é um
exemplo de um arquivo dinâmico, em outras
palavras é um arquivo se atualiza
automaticamente, a partir da requisição realizada.
Slide 26
Slide 26 text
Exemplos
Slide 27
Slide 27 text
Gerando HTMLs dinâmicos
Vamos utilizar o nosso servidor em Python para
gerar um HTML dinânico, que automaticamente
exibe as informações dos devices do banco de
dados e, as exiba na tela.
Slide 28
Slide 28 text
Concatenando strings no HTML
O HTML por principio é uma marcação estática,
por isso desenvolvedores criaram softwares para
adicionar funcionalidade úteis como variáveis,
condicionais, loops, imports e herança, a isso
damos o nome de sistema de templates.
Slide 29
Slide 29 text
Sistema de templates
É um software que estende a capacidade do
HTML padrão incluindo funcionalidades através
de uma sintaxe.
Slide 30
Slide 30 text
Sistema de templates
Vamos instalar o Jinja2, criar a pasta templates e
mover o nosso index.html para lá.
$ pip install jinja2
imt-webapp/
templates/
Slide 31
Slide 31 text
Servindo um template HTML
from webapp2_extras import jinja2
class HelloWorld(webapp2.RequestHandler):
@webapp2.cached_property
def jinja2(self):
return jinja2.get_jinja2(app=self.app)
def get(self):
tmpl = self.jinja2.render_template('index.html')
self.response.write(tmpl)
servidor.py
Modelo de dados
import models
# Dispositivos
models.Devices.get_all() # Retorna todos os dispositivos
models.Devices.get_by_id(XXX) # Retorna o dispositivo com ID
models.Devices.get_by(id=XXX, foo='a') # Retorna o dispositivo com o parametro
models.Devices.count() # Retorna a quantidade de dispositivos
device = models.Devices.get_by_id(1)
device.medidas() # Retorna as medidas deste device
Referencia
{{ foobar }}
{{ foo.bar }}
{{ foo['bar'] }}
{{ alist | join(',') }}
{{ alist | first }}
{% set valor = 'Variavel' %}
{% if True %} … {% else %} … {% endif %}
{% for item in foo %} … {% endfor %}
Slide 43
Slide 43 text
Going further
O JavaScript é uma linguagem de programação
que roda no navegador. Em conjunto com o
HTML você pode criar interações complexas entre
o usuário e a interface.
Slide 44
Slide 44 text
Próximas aulas
+ =
Slide 45
Slide 45 text
Atenção com o servidor
$ python servidor.py
serving on http://127.0.0.1:8080
GET /devices
POST /devices
PUT /devices
DELETE /devices
GET /devices/N
POST /devices/N