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

不言
Libérer: 2018-05-08 11:49:07
original
1559 Les gens l'ont consulté

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'),
)
Copier après la connexion

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
Copier après la connexion

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'),
)
Copier après la connexion

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 = &#39;/static/&#39;
Copier après la connexion
.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!