Explication détaillée de l'appel de fichiers statiques dans l'apprentissage Django

不言
Libérer: 2018-05-08 13:44:03
original
1734 Les gens l'ont consulté

Cet article présente principalement l'explication détaillée de l'appel de fichiers statiques pour l'apprentissage de Django. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

. Avant-propos

Les fichiers statiques font référence à js, ​​css, images, vidéos et autres fichiers du site Web. Cet article vous présente principalement le contenu pertinent sur l'appel de fichiers statiques dans l'apprentissage et Django. la partage avec vous. Étude de référence, pas grand chose à dire ci-dessous, jetons un œil à l'introduction détaillée

La méthode est la suivante

1.settings .py exemple de code et instructions liés au fichier statique :

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/
 
STATIC_URL = '/static/'
 
# 当运行 python manage.py collectstatic 的时候
# STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来
# 把这些文件放到一起是为了用apache等部署的时候更方便
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
 
# 其它 存放静态文件的文件夹,可以用来存放项目中公用的静态文件,里面不能包含 STATIC_ROOT
# 如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以
STATICFILES_DIRS = (
 os.path.join(BASE_DIR, "common_static"),
 '/path/to/others/static/', # 用不到的时候可以不写这一行
)
 
# 这个是默认设置,Django 默认会在 STATICFILES_DIRS中的文件夹 和 各app下的static文件夹中找文件
# 注意有先后顺序,找到了就不再继续找了
STATICFILES_FINDERS = (
 "django.contrib.staticfiles.finders.FileSystemFinder",
 "django.contrib.staticfiles.finders.AppDirectoriesFinder"
)
Copier après la connexion

2.STATIC_ROOT

STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static')#BASE_DIR是项目的绝对地址
Copier après la connexion

STATIC_ROOT est le répertoire dans lequel tous les fichiers statiques sont agrégés lors du déploiement de fichiers statiques (pyhton manage.py collectstatic). doit être écrit comme une adresse absolue, ici, par exemple, mon projet monsite est /home/monsite/, puis le 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 copiera tous les fichiers statiques dans le dossier STATIC_ROOT

3. 🎜>STATIC_ROOT n'est utilisé que lors du déploiement. Dans les situations réelles, il existe deux emplacements de placement généraux pour les fichiers statiques :

1 : créer un nouveau dossier statique dans chaque application, y placer les fichiers statiques. , et chargez les fichiers statiques. Par exemple, si vous souhaitez utiliser des fichiers statiques dans un modèle,

django recherchera automatiquement le dossier statique dans chaque application (donc, n'écrivez pas le mauvais nom du dossier). dossier, sinon Django ne pourra pas trouver votre dossier

2. Une autre option consiste à créer un dossier public en dehors de tous les fichiers d'application. Étant donné que certains fichiers statiques ne sont pas uniques à une certaine application, vous pouvez les placer.

dans un dossier public pour une gestion facile (notez que la création d'un dossier public pour les fichiers statiques n'est qu'un moyen de le rendre facile à gérer, mais ce n'est pas nécessaire.

l'application peut être utilisé dans toutes les applications Appliquez les fichiers statiques, car à la fin, tous les fichiers statiques existeront dans STATIC_ROOT) La question est maintenant de savoir comment faire savoir à

django que vous avez placé certains fichiers statiques dans un dossier public en dehors de l'application, puis STATICFILES_DIRS doit être configuré


STATICFILES_DIRS indique à Django de rechercher d'abord les fichiers statiques dans STATICFILES_DIRS, puis d'aller dans le dossier statique de chacun app Find (notez que Django recherche les fichiers statiques de manière paresseuse. Il arrête la recherche lorsqu'il trouve le premier)

STATICFILES_DIRS = (
 os.path.join(BASE_DIR, 'common_static'),
)
Copier après la connexion

3.STATIC_URL

Voilà donc tout, le mécanisme de. fichiers statiques Cela fonctionne, 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 oui, mais veuillez noter que vous y accédez dans le navigateur et que vous ne pouvez pas saisir vos fichiers statiques ? . L'adresse locale absolue du fichier. Par exemple, l'adresse locale d'une de mes photos est /home/mysite/common_static/myapp/photo.png

Il est alors impossible pour les 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 et là une telle page n'existe pas



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


Ensuite, vous pouvez saisir sur le navigateur : <🎜. >http://192.168.1.2:8000/static/common_static /myapp/photo.png

STATIC_URL = &#39;/static/&#39;
Copier après la connexion

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 est équivalent au STATIC_ROOT de l'adresse locale

Recommandations associées :

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

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!