Aplicações web Iphone e Django
Publicado em 18 de February de 2009
Para os que não sabem, eu trabalho desenvolvendo sites para dispositivos móveis (celulares e smarthphones) na Globo.com, e no último projeto que utilizamos o Django, precisávamos desenvolver um identificador de User Agent. Este identificador direcionaria a renderização de templates para o endereço correto onde os arquivos customizados se encontravam, pois fizemos templates específicos para os aparelhos portáteis da Apple.
Seguindo a linha do Django e após algumas pesquisas, encontramos um Middleware que resolvia a questão.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | from django.conf import settings import re class iPhoneMiddleware(object): """ If the Middleware detects an iPhone/iPod the template dir changes to the iPhone template folder. """ def __init__(self): self.normal_templates = settings.TEMPLATE_DIRS self.iphone_templates = (settings.TEMPLATE_DIRS[0] + '/iphone',) def process_request(self, request): p = re.compile('iPhone|iPod', re.IGNORECASE) if p.search(request.META['HTTP_USER_AGENT']): # user agent looks like iPhone or iPod settings.TEMPLATE_DIRS = self.iphone_templates else: # other user agents settings.TEMPLATE_DIRS = self.normal_templates return |
O código é muito explicativo, mas vale denotar o ponto chave, quando o script executa a expressão regular procurando pelas palavras “iPhone|iPod” vindas do parâmetro “User Agent”, ele altera o endereço padrão dos templates para a pasta padrão ou para o path + “/iphone”.
Está aí a mágica do negócio.
Leia também
Este artigo foi arquivado como Desenvolvimento e classificado como Django, iphone, ipod, midlleware, user agent.
2 comentários em "Aplicações web Iphone e Django"
Testes de Django Middleware | StartAPP comentou em 18 de February de 2009 às 7:26 am
[...] pudesse se desenvolver a partir daí. É mais ou menos parecido com o que já foi mencionado aqui, anteriormente. from django.conf import settings from app.pub.structure import * from django import [...]
Testes de Django Middleware | Planeta Globo.com comentou em 18 de February de 2009 às 11:06 pm
[...] pudesse se desenvolver a partir daí. É mais ou menos parecido com o que já foi mencionado aqui, [...]