2

Aplicações web Iphone e Django

Posted February 18th, 2009 in Desenvolvimento and tagged , , , , by felipepavao

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.

2 Responses so far.

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

  2. [...] pudesse se desenvolver a partir daí. É mais ou menos parecido com o que já foi mencionado aqui, [...]

Leave a Reply