国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

django靜態(tài)文件加載的方法

2020-01-04 15:02:13
字體:
供稿:網(wǎng)友

在模板中往往要加載靜態(tài)文件,如CSS, JavaScript,圖片等。那么這些文件在django中如何才能正確加載呢?

首先要在settings文件中進(jìn)行設(shè)置,關(guān)于靜態(tài)文件的設(shè)置選項(xiàng)主要由以下幾項(xiàng):

1. STATIC_URL = '/static/'

指定靜態(tài)文件查找的url。這樣設(shè)置后一般來說我們只要把靜態(tài)文件放在 APP 中的 static 目錄下就可以,但是有時(shí)我們有一些共用的靜態(tài)文件,這時(shí)候可以設(shè)置 STATICFILES_DIRS 另外弄一個(gè)文件夾。

2.STATIC_ROOT =os.path.join(BASE_DIR, 'collected_static')

當(dāng)運(yùn)行 python manage.py collectstatic 的時(shí)STATIC_ROOT 文件夾是用來復(fù)制所有STATICFILES_DIRS文件夾中的文件,以及各app中static中的文件。把這些文件放到一起是為了用apache等部署的時(shí)候更方便。

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)文件的文件夾,可以用來存放項(xiàng)目中公用的靜態(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 %}在這個(gè)模版文件中只需要出現(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在運(yùn)行時(shí)會自動將這些文件映射到STATIC_URL所給定的值下。也就是如,如果STATIC_URL = '/static/',那么在運(yùn)行時(shí),上邊模版中的樣例中的url會被替換為/static/css/sample.css。

這里做兩點(diǎn)說明:

1.其實(shí)將靜態(tài)文件路徑硬編碼在模版中也可以正常運(yùn)行,如使用href="/static/css/sample.css" rel="external nofollow" ,前提是配置好了STATIC_URL和STATIC_DIRS。但并不推薦這么做,因?yàn)槿绻髞盱o態(tài)資源的位置發(fā)生了遷移,如使用獨(dú)立服務(wù)器或者使用CDN,就要修改一大堆URL。而使用推薦的方法可以避免這個(gè)龐大的工作量,最多只需要修改STATIC_URL即可。

2.如果css文件中也使用了靜態(tài)文件如css背景,則按照相對路徑使用即可,因?yàn)闉g覽器解析css是會自動按照相對路徑尋找到正確的URL。

在這里還需要強(qiáng)調(diào)的是,在開發(fā)階段,Django使用的是內(nèi)建的一個(gè)靜態(tài)文件服務(wù)器,雖然在生產(chǎn)環(huán)境中也可以使用,但是它既不穩(wěn)定也不安全。更好的方式是使用提供web服務(wù)的服務(wù)器如apache來服務(wù)靜態(tài)文件。這需要你首先上傳代碼到服務(wù)器,然后運(yùn)行collectstatic命令:python manage.py collectstatic 然后配置web服務(wù)器來為靜態(tài)文件服務(wù),如對Apache2進(jìn)行配置。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大同县| 荣成市| 广南县| 双流县| 弥渡县| 大同市| 马尔康县| 郯城县| 卢龙县| 昌都县| 大关县| 莱西市| 伊吾县| 枣庄市| 威信县| 台北市| 余姚市| 电白县| 三台县| 玉溪市| 布拖县| 尼木县| 台江县| 两当县| 志丹县| 大邑县| 青浦区| 客服| 绵阳市| 临城县| 白玉县| 博爱县| 正镶白旗| 子长县| 高邑县| 集安市| 苍南县| 句容市| 乌审旗| 阿拉尔市| 张家川|