Maison  >  Article  >  développement back-end  >  Une brève analyse de STATIC_ROOT, STATIC_URL et STATICFILES_DIRS dans Django

Une brève analyse de STATIC_ROOT, STATIC_URL et STATICFILES_DIRS dans Django

不言
不言original
2018-05-08 11:49:071547parcourir

Cet article vous présente principalement les informations pertinentes sur STATIC_ROOT, STATIC_URL et STATICFILES_DIRS dans Django. L'article les présente en détail à travers un exemple de code. Il a une certaine valeur d'apprentissage de référence pour les études ou le travail de chacun. Les amis qui en ont besoin peuvent suivre Let's. jetez un œil ensemble

Avant-propos

Cet article vous présente principalement le contenu pertinent sur STATIC_ROOT, STATIC_URL et STATICFILES_DIRS dans Django. votre avantage. Veuillez vous y référer pour référence. Je n’en dirai pas plus ci-dessous. Jetons un coup d’œil à l’introduction détaillée.

Les détails sont les suivants :

Tout d'abord, nous configurons le fichier statique et ajoutons les lignes de code suivantes à settings.py :

settings.py

# the settings above
# STATIC SETTINGS
STATIC_URL = '/static/'
# BASE_DIR 是项目的绝对地址
STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static')
#以下不是必须的
STATICFILES_DIRS = (
 os.path.join(BASE_DIR, 'common_static'),
)

1.STATIC_ROOT

STATIC_ROOT est en cours de déploiement. fichiers statiques Lorsque (pyhtonmanage.pycollectstatic) tous les répertoires d'agrégation statique, STATIC_ROOT doivent être écrits comme une adresse absolue. Ici, par exemple, mon projet monsite est /home/mysite/

Alors STATIC_ROOT est /home. /monsite /collect_static/

Lors du déploiement du projet, saisissez dans le terminal :

python manage.py collectstatic

Django supprimera tous les statiques fichiers Copier dans le dossier STATIC_ROOT

2.STATICFILES_DIRS

STATIC_ROOT n'entre en jeu que lors du déploiement. Dans les situations réelles, il existe deux emplacements de placement généraux pour les types de fichiers statiques. :

1. La première consiste à créer un nouveau dossier statique dans chaque application et à y placer des fichiers statiques. Lors du chargement de fichiers statiques, par exemple, si vous souhaitez utiliser des fichiers statiques dans des modèles, Django recherchera automatiquement. le dossier statique dans chaque application (donc, n'écrivez pas mal le nom du dossier, sinon Django ne pourra pas trouver votre dossier)

2 L'autre méthode consiste à rechercher le dossier statique dans toutes les applications. . En dehors du fichier de l'application, créez un dossier public. Étant donné que certains fichiers statiques ne sont pas propres à une certaine application, vous pouvez les placer dans un dossier public pour une gestion facile (remarque, créez un dossier de fichiers statiques public. C'est juste un dossier facile à utiliser. gérer, mais ce n'est pas nécessaire. Les applications peuvent appliquer des fichiers statiques entre les applications, car à la fin, tous les fichiers statiques existeront dans STATIC_ROOT)

Alors quel est le problème maintenant pour faire savoir à Django que vous avez mis ? certains fichiers statiques dans un dossier public en dehors de l'application, vous devez configurer STATICFILES_DIRS

STATICFILES_DIRS = (
 os.path.join(BASE_DIR, 'common_static'),
)

STATICFILES_DIRS dit à Django : Tout d'abord, recherchez les fichiers statiques dans STATICFILES_DIRS , puis recherchez dans le dossier statique de chaque application (notez que Django recherche les fichiers statiques paresseusement et arrête la recherche lorsqu'il trouve le premier)

3.STATIC_URL

Jusqu'à présent, le mécanisme de fichiers statiques peut fonctionner, mais il y a une question : puis-je accéder directement aux fichiers statiques de mon projet via l'URL. La réponse est définitivement La, mais veuillez noter que vous y accédez via un navigateur ? Vous ne pouvez pas saisir l'adresse locale absolue de votre fichier statique. Par exemple, l'adresse locale d'une de mes images

est /home/mysite/common_static /myapp/photo.png

Ensuite il est impossible aux autres d'entrer directement sur le navigateur :


http://192.168.1.2:8000/home/mysite/common_static /myapp/photo.png


Dans ce cas, le navigateur signalera une erreur, une telle page n'existe pas


Alors, comment Django permet-il au navigateur d'accéder aux fichiers statiques sur le serveur ? Eh bien, comme mentionné précédemment, c'est le cas ? n'est pas possible d'accéder directement à l'adresse locale du serveur, un mappage est donc nécessaire. Django utilise STATIC_URL pour permettre au navigateur d'accéder directement aux fichiers statiques, tels que :

STATIC_URL = '/static/'
.

Ensuite vous pouvez saisir sur le navigateur :


http://192.168.1.2:8000/static/common_static/myapp/photo.png


Ensuite cela équivaut à accéder à /home/mysite/common_static/myap/photo.png

Donc sur le navigateur, utilisez le contenu spécifique du préfixe STATIC_URL pour mapper STATIC_ROOT,

HTTP:/ /192.168 .1.2:8000/static équivaut à STATIC_ROOT de l'adresse locale

Recommandations associées :

Comment utiliser Ajax dans Django

Comment empêcher la page de formulaire dans Django de se soumettre automatiquement après l'actualisation

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn