Para quem não sabe, Django é o framework web mais maduro atualmente disponível para python. Ele é rápido, robusto, e elegante, entretanto, é muito comum as pessoas codificarem com ele da forma que desejam. Às vezes isso é algo bom, às vezes não. Pensando nisso, resolvi citar aqui algums padrões que utilizo no desenvolvimento de meus projetos e aplicativos, para aqueles que estão começando e gostariam de saber como estruturar um projeto Django de forma legível e extensível. Enjoy!
Receitas
- Desenvola seu projeto utilizando um aplicativo para cada parte do projeto. Projetos que possuem poucos aplicativos "entupidos" de código devem ser evitados.
- Sempre que utilizar um aplicativo de terceiros, dê uma olhada no código do mesmo. Esta á uma excelente forma de enteder como funciona e como tirar melhor proveito do mesmo.
- Evite criar dependência entre os aplicativos, sempre que possível. Ou seja, não importe código de outros aplicativos do seu projeto caso não seja necessário.
- Não tenha medo de utilizar aplicativos que já vem com o próprio Django, como o flatpages, para páginas ordinárias.
- Se você deseja criar páginas específicas para um determinado projeto, mas que não parecem "encaixar" em nenhum dos aplicativos, você pode criar um aplicativo chamado website, e colocar o código esdrúxulo nela. Também muito útil para colocar tags e filtros customizados.
- Não tenha receio de criar tags e filtros específicos para o seu projeto. Tags são especialmente úteis para criar comportamentos semelhantes em todas as páginas de um projeto.
- Inicie cada um dos seus arquivos .py definindo o encoding do seu código com a seguinte:
# -*- coding:utf-8 -*-
Essa pequena linha vai lhe evitar muitas dores de cabeça com unicode. - Reescreva o método __unicode__ de cada um dos seus modelos definidos.
- Ao definir uma url no seu urls.py, procure sempre fazê-lo utilizando o atalho url, e defina um nome fictício para sua url. Isso torna a codificação e mudanças no código bem mais fáceis. Exemplo:
# bom!
url("^shop/$", shop.index, name="shop.home"),
# ruim...
("^forum/$", forum.index) - Mantenha os templates de cada aplicativo dentro de uma pasta templates no próprio aplicativo.
- O projeto deve ter uma pasta principal chamada templates, onde páginas como base.html(página raiz extendida por outras páginas do aplicativo), 404.html e 500.html devem estar presentes.
- Criar uma página form.html dentro da pasta padrão templates do projeto é uma forma útil de se manter um padrão entre os seus formulários. Por exemplo, quando você quiser mostrar um formulário para o usuário, basta retornar o formulário na resposta da requisição e "incluir" a página form.html no seu template. Apenas tome cuidado para não fazê-lo de forma imprudente, a tag include do Django não é um grande exemplo de eficiência.
- Caso precise criar configurações para um aplicativo específico do projeto, não jogue essas configurações diretamente no settings.py. O settings.py já é um arquivo bem grande por sí só, e novas variáveis devem ser evitadas, ali. Uma abordagem muito interessante é criar um arquivo app_settings.py no seu aplicativo e colocar as configurações do aplicativo lá. Uma solução interessante para quem, ainda assim, quiser colocar as configurações dos aplicativos no settings.py é a seguinte: importe o settings.py no seu app_settings.py e tente configurar as variáveis do seu app_settings através de variáveis do settings.py da seguinte forma:
Por enquanto, é só. rsrsrs, essa é a forma que eu trabalho, e espero que vocês gostem. Abraço!from django.conf import settings
# note que primeiro eu checo se a variavel esta definida no settings
# caso contrário, eu utilizo o valor definido no app_settings
ITEMS_PER_PAGE = getattr(settings, "ITEMS_PER_PAGE", 16)
Nenhum comentário:
Postar um comentário