Neste artigo é ensinado a importar o django 1.0 apartir de um arquivo zip usando o zipimport. Mas a nossa intenção aqui é fazer o mesmo sem a necessidade do zipimport. Abaixo será mostrado como.
A versão 0.96 (padrão até então no GAE) têm em seu built-in template tags como if, for, etc.. bem limitadas ao contrário da versão 1.1 ou superior.
É preferência de muitos usar {% if x == y %} do que {% ifequal x y %}, os operadores deixam a sintaxe mais perto do padrão usado em outras línguas,
Eu não uso todos os recursos disponibilizados do django no GAE, uso apenas o recurso de template e suas derivações. Já que o GAE nos oferece um framework bem poderoso para trabalhar em cima de sua plataforma.
Ainda uso um método mostrado neste artigo para importar o django por meio do zipimport. Realmente funciona, mas pra mim
Fuxicando aonde não devia
Então vamos por a mão na massa e descobrir como carregar as outras versões. Abaixo o código usado para importar o django 1.1 com seus respectivos comentários. (caso tenha lido o artigo que ensina a importar com zipimport terá mais familiaridade com o código)
import os
import logging
# Verifica se o script está sendo executado no appengine
if os.environ.has_key('SERVER_SOFTWARE') and os.environ['SERVER_SOFTWARE'].lower().startswith('google'):
# desinstala o django atual.
for k in [k for k in os.sys.modules if k.startswith('django')]:
del os.sys.modules[k]
# remove os caminhos que dão referência ao django
for k in [k for k in os.sys.path if k.find('/django-')]:
del os.sys.path[os.sys.path.index(k)]
# injeta o caminho do django 1.1 no sys.path
os.sys.path.insert(0, '/base/python_runtime/python_lib/versions/third_party/django-1.1/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
# Informativo indicando que os passos acima foram realizados
logging.info('O módulo do django foi mudado')
Aqui um exemplo de tudo funcionando e seu código fonte.
Att, Gilson Fabiano.