FAQ: Usando o Django¶
Por que recebo um erro sobre importar o DJANGO_SETTINGS_MODULE
?¶
Certifique-se de que:
The environment variable
DJANGO_SETTINGS_MODULE
is set to a fully-qualified Python module (i.e.mysite.settings
).O módulo citado está em
sys.path
(import meuSite.settings
deve funcionar).O módulo não contém erros de sintaxe.
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:
Em seu arquivo de configurações, você precisará definir
MEDIA_ROOT
como o caminho completo para um diretório onde você gostaria que o Django armazenasse os arquivos enviados. (Para desempenho, esses arquivos não são armazenados no banco de dados.) DefinaMEDIA_URL
como a URL pública base desse diretório. Certifique-se de que este diretório seja gravável pela conta de usuário do servidor web.Adicione a classe
FileField
ouImageField
no seu modelo, definindo a opçãoupload_to
para especificar o subdiretório da configuraçãoMEDIA_ROOT
para usar para arquivos enviados.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 atributourl
provido pelo Django. Por exemplo, se sua classeImageField
se chamamug_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.