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" )
2.STATIC_ROOT
STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static')#BASE_DIR是项目的绝对地址
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
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 dossier2. 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'), )
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
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 = '/static/'
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
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!