Pesquisar este blog

sexta-feira, 28 de maio de 2010

Migrando para o Django-1.2.1

Finalmente uma nova postagem sobre django! Estava precisando, não é mesmo? Bem, esses dias estive migrando uma aplicação do django-1.1 para o novíssimo, brilhante e cheiroso django-1.2.x, que saiu a poucos dias.

Para quem não sabe, o django é um framework de desenvolvimento web escrito em python muito popular atualmente. Em sua nova versão, com suporte a múltiplos bancos de dados e outros mimos, ele trás uma série de melhorias de segurança e arquitetura que tornam a atualização para a nova versão bastante atrativa.

As mudanças da versão 1.1 para 1.2 não tiveram um impacto muito grande no processo de desenvolvimento, mas, mesmo assim, a migração pode ser um tanto problemática caso seu projeto tenha muitas modificações suas. Aqui vão algumas dicas para quem pensa em migrar:

1. Admin já tem o jquery;
Nessa versão do django, o admin já importa o jquery por padrão (p/ changelist, add e edit), por isso, você pode utilizá-lo sem precisar importar o mesmo na classe Media do seu ModelAdmin. Para utilizar o jquery do django, você pode criar um alias assim:
var $ = django.jQuery; // alias para o jquery do django
ou assim:
(function($) {
// aqui vai seu código
})(django.jQuery);
Simples, não? O código acima é necessário pois o django.admin procura ser compatível com outras bibliotecas javascript que você pode estar utilizando como o mootools.

2. Atualize a configuração do seu banco.
Na nova versão, o tão pedido e necessário suporte a mais de um banco de dados está, finalmente, funcionando. Isso significa que você não está mais limitado a apenas uma base de dados. Por conta disso, a configuração do banco de dados no settings.py mudou. Agora, no lugar de definir apenas um banco, você deve definir um dicionário de bancos, onde o banco chamado default será o banco principal. No settings, sua configuração do banco deve ficar, mais ou menos assim:
DATABASES = { # dicionário de bancos reconhecidos
'default': {
'NAME': 'nome_do_banco',
# agora o nome da biblioteca de acesso é por extenso
'ENGINE'
: 'django.db.backends.postgresql_psycopg2',
'USER': 'seu_usuario',
'PASSWORD': 'senha'
},# definindo um segundo banco
'users': {
'NAME': 'user_data',
'ENGINE': 'django.db.backends.mysql',
'USER': 'mysql_user',
'PASSWORD': 'priv4te'
}
}
3. Atualize o admin_media
Essa dica é bem básica, mas vale lembrar. Ao atualizar para o django-1.2.x lembre-se de atualizar o caminho para os arquivos estáticos do django.admin. Se você não fizer isso, algumas coisas podem(vão!) quebrar.

4. Certifique-se de que nenhum app quebrou
Alguns aplicativos muito úteis disponíveis na internet simplesmente quebram com o django-1.2.x. Por isso, tenha certeza (testes!) de que nenhum aplicativo quebrou após a atualização.

5. Defina rotas!
Se você estiver utilizando mais de um banco de dados, certifique-se de que você definiu rotas para eles. Rotas, no django, são uma forma fácil de especificar em qual banco está cada modelo. Neste link você encontra informações de como escrever suas rotas.

6. Atualize seu TEMPLATE_CONTEXT_PROCESSORS
Na nova versão do django, os context_processors padrão mudaram. O django.core.context_processors.auth agora está em  django.contrib.auth.context_processors.auth e um novo context processor (django.contrib.messages.context_processors.messages) foi adicionado. Caso você tenha modificado o TEMPLATE_CONTEXT_PROCESSORS padrão do settings, certifique-se que os context processors acima estão definidos corretamente. Veja um exemplo:
("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.contrib.messages.context_processors.messages")
Fim ^^. Existem outros problemas que podem ocorrer, como com quem utiliza o aplicativo crsf, por exemplo, mas essa parte aí já é com vocês. Mas estão avisados ; ). Abraço!

Nenhum comentário:

Postar um comentário