pavão

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 , , , , .

Comente este artigo:

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, [...]

Picture »

RSS »

Na rede »

Categorias »

Arquivos »

No Twitter »

Copyright © 2009-2010 Pavão Web - Todos os direitos reservados