# documentação Django 2.0.8

# 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?

As vezes todos os seus templates precisam das mesmas coisas. Um exemplo comum seria menus gerados dinamicamente. Em uma primeira olhada parece lógico simplesmente adicionar um dicionário comum ao contexto do template.

A solução correta é usar um `RequestContext`. Detalhes em como utilizá-lo: Using RequestContext.