您好,登錄后才能下訂單哦!
如何在django中加載靜態(tài)文件?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
首先要在settings文件中進(jìn)行設(shè)置,關(guān)于靜態(tài)文件的設(shè)置選項主要由以下幾項:
1. STATIC_URL = '/static/'
指定靜態(tài)文件查找的url。這樣設(shè)置后一般來說我們只要把靜態(tài)文件放在 APP 中的 static 目錄下就可以,但是有時我們有一些共用的靜態(tài)文件,這時候可以設(shè)置 STATICFILES_DIRS 另外弄一個文件夾。
2.STATIC_ROOT =os.path.join(BASE_DIR, 'collected_static')
當(dāng)運行 python manage.py collectstatic 的時STATIC_ROOT 文件夾是用來復(fù)制所有STATICFILES_DIRS文件夾中的文件,以及各app中static中的文件。把這些文件放到一起是為了用apache等部署的時候更方便。
3.
STATICFILES_DIRS = ( ("images",os.path.join(STATIC_URL, 'images').replace('\\', '/')), ("css", os.path.join(STATIC_URL, 'css').replace('\\', '/')), ("js", os.path.join(STATIC_URL, 'js').replace('\\', '/')), )
其它存放靜態(tài)文件的文件夾,可以用來存放項目中公用的靜態(tài)文件,里面不能包含 STATIC_ROOT如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以。
4.
STATICFILES_FINDERS = ( "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder" )
默認(rèn)設(shè)置,相當(dāng)于搜索引擎,Django 默認(rèn)會在 STATICFILES_DIRS中的文件夾和 各app下的static文件夾中找文件。注意有先后順序,找到了就不再繼續(xù)找了。
那如何在模版中使用這些靜態(tài)文件呢?可以參考如下代碼,其中語句{% load static from staticfiles %}在這個模版文件中只需要出現(xiàn)一次。
{% load static from staticfiles %} <link href="{% static" rel="external nofollow" css/sample.css" %}" rel="stylesheet">
用下邊的方法也可
{% load static from staticfiles %} {% static "css/sample.css" assample %} <link href="{{ sample }}" rel="external nofollow" rel="stylesheet">
Django在運行時會自動將這些文件映射到STATIC_URL所給定的值下。也就是如,如果STATIC_URL = '/static/',那么在運行時,上邊模版中的樣例中的url會被替換為/static/css/sample.css。
這里做兩點說明:
1.其實將靜態(tài)文件路徑硬編碼在模版中也可以正常運行,如使用href="/static/css/sample.css" rel="external nofollow" ,前提是配置好了STATIC_URL和STATIC_DIRS。但并不推薦這么做,因為如果后來靜態(tài)資源的位置發(fā)生了遷移,如使用獨立服務(wù)器或者使用CDN,就要修改一大堆URL。而使用推薦的方法可以避免這個龐大的工作量,最多只需要修改STATIC_URL即可。
2.如果css文件中也使用了靜態(tài)文件如css背景,則按照相對路徑使用即可,因為瀏覽器解析css是會自動按照相對路徑尋找到正確的URL。
看完上述內(nèi)容,你們掌握如何在django中加載靜態(tài)文件的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。