Criando sites complexos com Django

Tive uma agradável surpresa quando comecei a testar o Django, um framework escrito em Python que permite a criação de sites complexos em pouco tempo. Estou em uma missão de escolher um framework para trabalhar em um grande projeto, criei uma planilha e comecei a colocar detalhes que são importantes para esse projeto e o Django foi o que mais me supreendeu.

Tenho alguns amigos tentando me convencer a utilizar Ruby on Rails, o que eu não acho ruim, porém existe uma curva de aprendizado já que não estou tão familiarizado em Ruby quanto estou em Python. Eu teria de ter uma curva de aprendizado para fazer algo em Ruby. Não morro de paixões por linguagem de programação nenhuma, apenas utilizo aquela que me atende nas necessidades básicas. E nesse momento, Python me atende perfeitamente, mas se algum dia eu tiver alguma experiência melhor em outra linguagem, por que não mudar? Inclusive encontrei esse documento que se trata de um benchmark feito entre três frameworks (em PHP foi utilizado o Symfony, em Ruby o Rails e em Python o Django), o próprio pessoal do RoR concluiu: “Rails performed much better than Symfony. And Django performed much better than Rails”.

Sem dúvidas a performance é um fator importante para mim. Outro peso é o modelo MVC (Model View Controler), mas o pessoal do Django se diz estar mais próximo do modelo MTV (Model, Template, View) , onde para mim é um fator muito importante.

Como sou um péssimo webdesigner e não gosto da parte visual, o fato de adotar um modelo MVC ou MTV me ajuda muito. Não tive experiências muito boas com PHP, onde mesmo existindo frameworks que trabalham no modelo MVC, o programador tem que ter um dom de webdesigner também. Eu quero me preocupar apenas com o motor do site e não com o designer.

O sistema de templates do Django é fantástico. Posso ter designers pensando apenas no designer sem se preocupar na parte lógica. Enquanto isso o programador pensa apenas no motor e não na parte visual.

Outro fator de peso é a abstração de banco de dados. Você pode usar tanto MySQL, Postgresql, Oracle, SQLLite ou outros bancos suportados pelo Django. Você não precisa ser um DBA, o Django cuida dessa parte para você, embora se estiver trabalhando em um projeto grande, conhecimento de DBA é indispensável.

Alguns sites que serviram de inspiração: