La partie la plus importante de la question est dans le sujet.
Je me demande quelle balise est la meilleure pour quel cas. De plus ... j'ai trouvé du code, qui utilise également settings.STATIC_URL
inclus {{STATIC_URL}}
dans les modèles.
Je suis un peu confus.
django
django-templates
trikoder_beta
la source
la source
Réponses:
Le intégré
static
balise de modèle "lien [s] vers les fichiers statiques enregistrés dansSTATIC_ROOT
".L'
staticfiles
application contribstatic
balise de modèle de "utilise leSTATICFILES_STORAGE
stockage configuré pour créer l'URL complète du chemin relatif donné", ce qui est "particulièrement utile lors de l'utilisation d'un backend de stockage non local pour déployer des fichiers".La
static
documentation de la balise de modèle intégrée (liée à ci-dessus) contient une note indiquant d'utiliser l'staticfiles
application contribstatic
balise de modèle de "si vous avez un cas d'utilisation avancé, comme l'utilisation d'un service cloud pour servir des fichiers statiques", et elle donne cet exemple de Ce faisant:Vous pouvez utiliser
{% load staticfiles %}
plutôt que{% load static from staticfiles %}
si vous le souhaitez, mais ce dernier est plus explicite.la source
{% load static %}
. "Dans les anciennes versions, vous deviez utiliser{% load static from staticfiles %}
dans votre modèle pour servir des fichiers à partir du stockage défini dans STATICFILES_STORAGE. Ce n'est plus nécessaire."{% load static %}
.Je ne sais pas quelle est la différence, mais j'ai trouvé une différence de cas d'utilisation (en utilisant django 1.9.1 fonctionnant via apache, wsgi sur Python 3.4). Dans mon application, j'ai des images
ImageFields
dans la base de données. Si j'utilise un code comme celui-ci dans mon modèle:puis, si j'utilise
{% load static %}
, django lance unTypeError
(Cannot mix str and non-str arguments
). Ceci est probablement dû au fait que leobject.image
n'est pas une chaîne, c'est unImageField
, qui est converti en chaîne à un stade ultérieur. Cependant, si l'on utilise une{% load staticfiles %}
telle erreur, aucune erreur ne se produit.Malheureusement, j'ai découvert cette différence après avoir passé des heures à essayer de déboguer le problème. J'ai réussi à trouver une solution de contournement lors de l'utilisation de la première option, à savoir pour ajouter une méthode de convertisseur de chaîne à l'objet comme ceci:
J'espère que cette connaissance sera utile à quelqu'un.
la source
La documentation Django préfère maintenant
{% load static %}
.{% load staticfiles %}
fonctionne mais je pense qu'il est obsolète.https://docs.djangoproject.com/en/dev/ref/templates/builtins/#static
la source
Reportez-vous à la documentation , où il y a une belle explication à ce sujet. En fait, la
{% static %}
balise de modèle connaît l'emplacement de STATICFILE_STORAGEComme le disent les documents:
J'espère que cela pourra aider!!
la source
{% load static %}
,{% load staticfiles %}
,{{STATIC_URL}}
... et sais que je ne sais pas quelle est la différence entre{% load static %}
et{% load static from staticfiles %}
{% load staticfiles %}
est très utile lorsque vous utilisez différents stockages comme S3, puis il sera converti en URL S3la source