Gerenciamento de arquivos estáticos (exemplo: imagens, JavaScript, CSS)Link para este cabeçalho
Os sites web geralmente precisam servir arquivos adicionais como imagens, JavaScript, ou CSS. No Django, nós nos referímos a estes arquivos como “arquivos estáticos”. O Django fornece django.contrib.staticfiles para ajudar você a lidar com eles.
Está página descreve como você pode servir estes arquivos estáticos.
Configurando arquivos estáticosLink para este cabeçalho
Certifique-se de que
django.contrib.staticfilesestá incluído no seu ::setting::INSTALLED_APPS.Em seu arquivo de configurações, defina
STATIC_URL, por exemplo:STATIC_URL = '/static/'Nos seus templates, ou coloque manualmente a url como
/static/my_app/myexample.jpgou, preferivelmente, use a tag de templatestaticpara construir a URL para o dado caminho relativo usando o armazenamento configurado emSTATICFILES_STORAGE(isso torna mais fácil quando você quiser trocar para um CDN - (content delivery network) para servir arquivos estáticos).{% load staticfiles %} <img src="{% static "my_app/myexample.jpg" %}" alt="My image"/>Armazene seus arquivos estáticos no diretório chamado
staticdentro da sua app. Por exemplomy_app/static/my_app/myimage.jpg.
Seu projeto irá provavelmente ter ativos estáticos que não estão amarrados a uma app em particular. Além de usar um diretório static/ dentro de sua app, você pode definir uma lista de diretórios (STATICFILES_DIRS) no seu arquivo de configurações onde o Django também irá procurar por arquivos estáticos. Por exemplo:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
'/var/www/static/',
]
Veja a documentação para a definição do STATICFILES_FINDERS para detalhes sobre como o staticfiles encontra seus arquivos.
Serving static files during developmentLink para este cabeçalho
Se você usa django.contrib.staticfiles como explicado acima, runserver irá fazer isso automaticamente quando o DEBUG está definido como True. Se você não tem django.contrib.staticfiles no INSTALLED_APPS, você ainda pode servir arquivos estáticos manualmente usando a “view” django.contrib.staticfiles.views.serve().
Isso não é apropriado para uso em produção!. Para algumas estratégias de implantação, veja Deploy de arquivos estáticos.
Por exemplo, se seu STATIC_URL está definido como /static/, você pode fazê-lo adicionando o seguinte pedaço de código no seu urls.py:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Serving files uploaded by a user during developmentLink para este cabeçalho
Durante o desenvolvimento, você pode servir arquivos de media dos usuários através do MEDIA_ROOT usando a “view” django.contrib.staticfiles.views.serve().
Isso não é apropriado para uso em produção!. Para algumas estratégias de implantação, veja Deploy de arquivos estáticos.
Por exemplo, se o seu MEDIA_URL está definido como /media/, você pode faze-lo adicionando o seguinte pedaço de código no seu urls.py:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
TestandoLink para este cabeçalho
Ao executar testes que usam requisições HTTP reais ao invés do cliente de teste embutido (isto é, quando se usa a LiveServerTestCase do Django) o conteúdo estático precisa ser servido junto com o resto do conteúdo então o ambiente de teste reproduz o real tão fielmente quanto possível, mas LiveServeTestCase tem somente funcionalidades de servidor de arquivos muito básicas. Ele não sabe sobre as caraceterísticas de procura da aplicação staticfiles e assume que o conteúdo estático já tenha sido coletado pelo STATIC_ROOT.
Por causa disso, staticfiles vem com sua própria django.contrib.staticfiles.testing.StaticLiveServerTestCase, uma subclasse daquela que vem embutida uma que tem a habilidade de servir de maneira transparente todos os ativos durante a execução destes testes de uma maneira similar a que temos em tempo de desenvovlimento com DEBUG = TRUE, isto é, sem coletá-los usando antes o collectstatic.
ImplantaçãoLink para este cabeçalho
django.contrib.staticfiles fornece um comando de gerenciamento conveniente para juntar arquivos estáticos e um único diretório então você pode servi-los facilmente.
Defina a configuração do
STATIC_ROOTpara o diretorio do qual você gostaria de servir estes arquivos, por exemplo:STATIC_ROOT = "/var/www/example.com/static/"Execute o comando de gerenciamento
collectstatic$ python manage.py collectstaticIsso irá copiar todos os arquivos dos diretórios “static” para dentro do diretório definido em
STATIC_ROOT.Use um servidor Web de sua escolha para servir os arquivos. O Deploy de arquivos estáticos cobre algumas estratégias de implantações comuns para arquivos estáticos.
Aprenda maisLink para este cabeçalho
Este documento cobriu o básico e alguns padrões de uso comum. Para detalhes completos sobre todas as configurações, comandos, tags de templates, e outras partes incluidas em django.contrib.staticfiles, veja a referência de arquivos estáticos.