A parte mais importante da pergunta está no tópico.
Estou me perguntando qual tag é a melhor para cada caso. Além disso ... encontrei código, que também uso settings.STATIC_URL
incluído {{STATIC_URL}}
nos templates.
Eu estou um pouco confuso.
django
django-templates
trikoder_beta
fonte
fonte
Respostas:
A
static
tag de modelo embutida "link [s] para arquivos estáticos que são salvos emSTATIC_ROOT
".A tag de modelo
staticfiles
do aplicativo contribstatic
"usa oSTATICFILES_STORAGE
armazenamento configurado para criar a URL completa para o caminho relativo fornecido", que é "especialmente útil ao usar um backend de armazenamento não local para implantar arquivos".A
static
documentação da tag de modelo integrada (vinculada acima) tem uma nota que diz para usar a tag de modelostaticfiles
do aplicativo contribstatic
"se você tiver um caso de uso avançado, como usar um serviço de nuvem para servir arquivos estáticos", e dá este exemplo de fazendo isso:Você pode usar em
{% load staticfiles %}
vez de{% load static from staticfiles %}
se quiser, mas o último é mais explícito.fonte
{% load static %}
. "Em versões anteriores, você tinha que usar{% load static from staticfiles %}
em seu modelo para servir arquivos do armazenamento definido em STATICFILES_STORAGE. Isso não é mais necessário."{% load static %}
.Não sei qual deve ser a diferença, mas encontrei uma diferença de caso de uso (usando django 1.9.1 rodando via apache, wsgi em Python 3.4). No meu aplicativo, tenho algumas imagens no
ImageFields
banco de dados. Se eu usar um código como este em meu modelo:então, se eu usar
{% load static %}
, django lança umTypeError
(Cannot mix str and non-str arguments
). Presumivelmente, isso ocorre porque oobject.image
não é uma string, é umImageField
, que é convertido em uma string em um estágio posterior. No entanto, se alguém usa,{% load staticfiles %}
esse erro não ocorre.Infelizmente, descobri essa diferença depois de passar horas tentando depurar o problema. Consegui encontrar uma solução alternativa para quando usar a primeira opção, a saber, adicionar um método conversor de string ao objeto como este:
Espero que esse conhecimento seja útil para alguém.
fonte
A documentação do Django prefere agora
{% load static %}
.{% load staticfiles %}
funciona, mas acho que está obsoleto.https://docs.djangoproject.com/en/dev/ref/templates/builtins/#static
fonte
Consulte a documentação , onde há uma boa explicação sobre isso. Na verdade, a
{% static %}
tag do modelo sabe a localização do STATICFILE_STORAGEComo dizem os documentos:
Espero que ajude!!
fonte
{% load static %}
,{% load staticfiles %}
,{{STATIC_URL}}
... e sabe que eu não sei o que é a diferença entre{% load static %}
e{% load static from staticfiles %}
{% load staticfiles %}
é muito útil quando você está usando diferentes armazenamentos como S3, então ele se converterá em URLs S3fonte