FAQ: Usando o Django

Por que recebo um erro sobre importar o DJANGO_SETTINGS_MODULE?

Certifique-se de que:

  • A variavél de ambiente DJANGO_SETTINGS_MODULE é definida como um módulo Python reconhecido (i.e. “meuSite.settings”).
  • O módulo citado está em sys.path (import meuSite.settings deve funcionar).
  • O módulo não contém erros de sintaxe (é claro).

Eu não gosto da sua linguagem de template. Eu preciso usá-la?

Nós pensamos que nosso mecanismo de template é a melhor do mundo mas, reconhecemos que escolher uma linguagem de template é quase como escolher uma religião. Django não força nenhuma linguagem de template, então se você gosta de: Jinja2, Mako ou qualquer outra, sinta-se livre para utilizá-las.

Eu tenho que usar o seu modelo/camada de banco de dados?

Não. Tal qual o sistema de template, a camada de modelos/banco de dados é desacoplada do resto da estrutura.

A única exceção é: se você usar uma biblioteca diferente de banco de dados você não conseguirá usar o admin do Django gerado de forma automática. Ele é fortemente acoplado a camada de banco de dados do Django

Como eu utilizo campos de imagem e de arquivo?

Usando um FileField ou um ImageField em um modelo, seguido pelos passos:

  1. Em seu arquivo de configurações, você vai precisar definir MEDIA_ROOT com o caminho completo para o diretório onde você gostaria que o Django fizesse o upload de seus arquivos. (Para performance, esses arquivos não são armazenados no banco de dados.) Define MEDIA_URL como a URL pública desse diretório. Tenha certeza que esse diretório seja gravável pelo usuário da conta referente ao servidor Web.
  2. Adicione a classe FileField ou ImageField no seu modelo, definindo a opção upload_to para especificar o subdiretório da configuração MEDIA_ROOT para usar para arquivos enviados.
  3. Tudo que vai ser armazenado no seu banco de dados será o caminho para o arquivo (referente a configuração MEDIA_ROOT). Você vai poder usar o atributo url provido pelo Django. Por exemplo, se sua classe ImageField se chama mug_shot, você pode pegar o caminho absoluto para sua imagem no template com: {{ object.mug_shot.url }}.

Como eu torno uma variável disponível para todos os meus templates?

Algumas vezes todos os templates precisarão da mesma coisa. Um exemplo comum são os menus gerados dinamicamente. À primeira vista, parece lógico adicionar um dicionário comum ao contexto do template

A melhor maneira de fazer isso no Django é usar um RequestContext. Detalhes de como fazer isso estão aqui: Using RequestContext.

Back to Top