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:
- In your settings file, you’ll need to define
MEDIA_ROOT
as the full path to a directory where you’d like Django to store uploaded files. (For performance, these files are not stored in the database.) DefineMEDIA_URL
as the base public URL of that directory. Make sure that this directory is writable by the web server’s user account. - 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.