FAQ: Usando o Django¶
Por que acontece um erro ao importar o DJANGO_SETTINGS_MODULE?¶
Certifique-se de que:
A variável de ambiente DJANGO_SETTINGS_MODULE está configurada para um módulo Python totalmente qualificado (ex:. “mysite.settings”).
O módulo está em
sys.path
(import mysite.settings
deve funcionar).O módulo não contém erros de sintaxe (é claro).
Se você está usando o mod_python, mas não está usando o manipulador de requisições do Django, você precisa corrigir um bug do mod_python relacionado ao uso de
SetEnv
; antes de você importar qualquer coisa do Django você precisa fazer o seguinte:os.environ.update(req.subprocess_env)
(onde
req
é o objeto de requisição do mod_python).
Eu não gosto da sua linguagem de template. Eu tenho de usá-la?¶
Pensamos que nossa linguagem de templates é a melhor coisa inventada desde os pedaços de bacon mas reconhecemos que a escolha da linguagem de templates é uma discussão quase religiosa. Não há nada no Django que requer que você use a linguagem de template, então, se você prefere o ZPT, Cheetah, ou o que quer que seja, sinta-se livre para usá-los.
Eu tenho de usar sua camada de modelo/banco de dados?¶
Não. Assim como o sistema de templates, a camada de modelo/banco de dados está desacoplada do resto do framework.
A única exceção é: se você usar uma biblioteca diferente de banco de dados, você irá perder o sistema de administração gerado automaticamente pelo Django. Esse aplicativo é acoplado à camada de banco de dados do Django.
Como eu uso os campos de imagem e arquivos?¶
O uso de um FileField
ou um
ImageField
nos models requer alguns passos:
- No seu arquivo de configurações, defina o
MEDIA_ROOT
como o caminho completo para o diretório onde você gostaria que o Django salvasse os arquivos enviados. (Para melhor performance, esses arquivos não são guardados em um banco de dados.) Defina oMEDIA_URL
como a URL pública para esse diretório. Assegure-se de que esse diretório tenha permissão de escrita para o usuário do servidor Web. - Adicione o
FileField
ouImageField
ao seu model, definindo a opçãoupload_to
para instruir o Django para qual subdiretório doMEDIA_ROOT
ele deve enviar os arquivos. - Tudo que será gravado no seu banco de dados é o caminho para o arquivo
(relativo ao
MEDIA_ROOT
). Você pode também querer usar o atributo de conveniênciaurl
fornecido pelo Django. Por exemplo, se o seuImageField
é chamadomug_shot
, você pode obter a URL absoluta para a sua imagem em um template com{{ object.mug_shot.url }}
.
Como eu torno uma variável disponível em todos os meus templates?¶
Algumas vezes seus templates precisam todos da mesma coisa. Um exemplo comum seria menus gerados dinamicamente. À primeira vista, parece lógico simplesmente adicionar um dicionário comum ao contexto do template.
A solução correta é usar um RequestContext
. Detalhes em como fazer isso
estão aqui: Subclassing Context: RequestContext.