溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Django使用模板后無(wú)法找到靜態(tài)資源文件問(wèn)題解決

發(fā)布時(shí)間:2020-09-02 18:01:16 來(lái)源:腳本之家 閱讀:204 作者:WhiteBlackCat 欄目:開(kāi)發(fā)技術(shù)

環(huán)境配置

  • Django版本1.11
  • python版本3.6.2

前言

在編寫(xiě)Django網(wǎng)站的時(shí)候,在涉及模板方面,一些簡(jiǎn)單的例子都沒(méi)有問(wèn)題,但這些例子都有一個(gè)共同點(diǎn),那就是所使用的模板沒(méi)有需要的靜態(tài)資源文件。當(dāng)涉及到模板中需要靜態(tài)資源文件,如css,js等文件的時(shí)候,如果我們不做什么處理,直接按前端寫(xiě)好的給我們放入到templates文件中時(shí),即如下形式:

|templates

|----js

|--------xxxx.js

|----css

|--------xxxx.css

|----xxxx.html

當(dāng)運(yùn)行網(wǎng)站的時(shí)候,我們會(huì)發(fā)現(xiàn)所有需要加載的都沒(méi)有加載進(jìn)來(lái),原因便是在渲染頁(yè)面的時(shí)候,Django的處理器將目錄對(duì)應(yīng)到了根目錄,所以我們使用的其實(shí)是在根目錄下的靜態(tài)資源文件(其實(shí)并沒(méi)有),所以也就會(huì)出現(xiàn)404錯(cuò)誤。

解決方法

首先settings.py文件中應(yīng)有如下代碼

STATIC_URL = '/static/'

這是用來(lái)定義靜態(tài)目錄URL,一般都已經(jīng)給出

在每個(gè)要使用到靜態(tài)資源的模板中,我們應(yīng)該將路徑改為static下的目錄,比如

/static/my_app/example.jpg

或者

 {% load static %}
 <img src="{% static "my_app/example.jpg" %}" alt="My image"/>  

當(dāng)然,不使用static也行,可以自己定義存放靜態(tài)資源文件的目錄,如下:

 STATICFILES_DIRS = [
 os.path.join(BASE_DIR, "static"),
 '/var/www/static/',
 ]

我們需要注意的是,這里的static文件夾是處于你所引用模板的app下的static文件夾,盡量不要把資源放在根目錄下static文件夾,因?yàn)楦夸浵碌膕tatic文件夾一般是用來(lái)將所有STATICFILES_DIRS中所有文件夾中的文件,以及各app中static中的文件都復(fù)制過(guò)來(lái),為的是把這些文件放到一起是用apache等部署的時(shí)候更方便,如下

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

我們就定義了一個(gè)collected_static在根目錄下用來(lái)收集所有靜態(tài)資源文件。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI