1. 程式人生 > >在Django中使用css,js等靜態檔案

在Django中使用css,js等靜態檔案

搗鼓了三個晚上才成功,遇到了好多麻煩,發現別人的部落格都操作不了,趕緊把自己的操作分享出來
下面是方法:
1. settings 中有三個地方要寫

# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'templates/Web/static')

STATICFILES_DIRS = [
    ("css", os.path.join(STATIC_ROOT, 'css')),
    ("img", os.path.join(STATIC_ROOT, 'img'
)), ("js", os.path.join(STATIC_ROOT, 'js')), ]
  • 這裡STATIC_URL通常設為’/static/’,當然設成別的也可以,它的作用其實就是當我們想要引用在STATIC_ROOT中靜態檔案時可以有一個URL值來呼叫,其實我覺得設成空也沒什麼關係吧,具體呼叫在後面講;
  • STATIC_ROOT 這個很關鍵
    通常我們設成STATIC_ROOT = os.path.join(BASE_DIR, "templates/Web/static/")(Linux下這樣,Windows下斜槓不一樣,要用replace換一下),BASE_DIR是整個專案的根目錄,所以後面的設成到你的static資料夾的路徑就行,沒有必要跟我一樣
  • STATIC_DIRS,這也是我和別人的過程不一樣的地方
    格式跟我那個一樣就好,最開始這裡我寫的就是
STATICFILES_DIRS = [
        STATIC_ROOT,
]

結果瀏覽器報錯
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
也就是STATICFILES_DIRS 和 STATIC_ROOT一定不能相同!!!
之後百度一搜寫成最後那樣,發現還是不行,
問題出在當我HTML訪問的是××××/static/××××.css時,我用××××/SpiderWeb/static/××××.css可以訪問到
但是當我把HTML改為××××/SpiderWeb/static/××××.css,我用××××/SpiderWeb/static/××××.css就訪問不到了
F12發現瀏覽器還是找不到靜態檔案,最後搜百度看原始碼檔案,發現這個DIR的作用是
collect static files for deployment.


可以通過collectstatic指令把靜態檔案自動收集一下!!!也就是上面講的STATIC_ROOT 的地址,這裡很關鍵就不用管django怎麼找這些靜態檔案了,Tool下面進 manage.py,然後輸入collectstatic,之後選yes,大功告成!
其實,執行collectstatic命令後,所有static檔案都收在STATIC_ROOT的子目錄css,js,img中,所以我們引用靜態檔案的時候,也可以直接使用/static/css,而不使用…/templates/Web/static/css了
2. urls中直接引用的方法

from django.conf import settings
from django.views.static import serve
#urlpartterns中加
url(r'^static/(?P<path>.*)$',serve,{'document_root': settings.STATIC_ROOT}),

前面講引用就在這裡前面把靜態檔案收集到ROOT裡,現在直接用settings.STATIC_ROOT,在瀏覽器裡輸入http://127.0.0.1:8000/static/style.css 就可以訪問啦(當然要runserver)
3. HTML 中很簡單,大家的部落格都有寫,兩個要點
- load staticfiles
- {% static '*****'%}
比如我的是這樣的:

<!DOCTYPE html>
{% load staticfiles %}
<html>
<head>
    <title>1</title>

    <!-- meta -->
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- css -->
    <link rel="stylesheet" href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
    <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
    <link rel="stylesheet" href="{% static 'css/pace.css' %}">
    <link rel="stylesheet" href="{% static 'css/custom.css' %}">
    <!-- js -->
    <script src="{% static 'js/jquery-2.1.3.min.js' %}"></script>
    <script src="{% static 'js/bootstrap.min.js' %}"></script>
    <script src="{% static 'js/pace.min.js' %}"></script>
    <script src="{% static 'js/modernizr.custom.js' %}"></script>

相關推薦

Django使用cssjs靜態檔案

搗鼓了三個晚上才成功,遇到了好多麻煩,發現別人的部落格都操作不了,趕緊把自己的操作分享出來 下面是方法: 1. settings 中有三個地方要寫 # Static files (CSS, JavaScript, Images) STATIC_URL

Eclipsemaven環境使用jetty啟動後不能儲存更改後的cssjs靜態檔案的解決方法

【問題現象】      使用Maven + Eclipse + Jetty 進行J2EE開發,但有一個問題就是css、js等靜態檔案更改以後,在eclipse裡儲存都會失敗,eclipse給出的錯

django專案使用cssjs靜態檔案

要在django的模板中引用css、js、image等靜態檔案,首先將settings.py中DEBUG設為True。 1.在project目錄下建立一個存放靜態檔案的目錄,如:static 2.在urls.py的patterns中增加一行: (r'^static/(?P&

Spring Boot thymeleaf模版支援css,js靜態檔案新增

Thymeleaf引入 Thymeleaf是一個Java模板引擎開發庫,可以處理和生成HTML、XML、JavaScript、CSS和文字,在Web和非Web環境下都可以正常工作。 1.新增依賴包 <dependency> <groupId>org.springf

springmvc配置後jsp頁面不能載入css,js靜態檔案

記錄一下。 專案啟動後只能訪問jsp頁面,jsp引用的css,js都不能成功載入。瀏覽器控制檯提示404,jsp頁面引用的地址沒錯。所以不是路徑的問題。 需要更改spring-mvc.xml裡面的配

django 解決cssjs檔案304導致無法載入顯示問題

這種情況一般會在windows系統下出現 1、前臺、後臺如果無法載入css等樣式。(建議通過此辦法來解決) 這是因為你安裝的某些IDE 或者其他更改了登錄檔導致的系統的登錄檔\HKEY_CLASSES_ROOT\.css的Content Type不是text/css,修改即可。改完記得重啟開發伺服器並按C

Spring Boot無法訪問靜態資源(cssjs)的問題

規範專案結構使用官方預設的掃描路徑。畢竟框架的好處就是嚴格按照要求搭好之後幾乎所有的操作都會變得簡單,一句話概括就是一勞永逸 spring boot對靜態資源的預設掃描路徑是:classpath:/staticclasspath:/publicclasspath:/resou

Spring mvc不能引入js靜態檔案問題的解決方案

No mapping found for HTTP request with URI [/.../script/jquery-3.1.0.min.js] in DispatcherServlet with name 'springDispatcherServlet' 分析一

SpringBoot頁面跳轉訪問cssjs靜態資源引用無效解決(六)

目錄 一、頁面跳轉 二、情況說明 三、 問題解決方案 1、 引入thymeleaf的依賴包 2、 專案路徑 注意 (1) 頁面引用外部靜態資源的方式 (2) 核心解決方案 一、頁面跳轉 如果你還沒有實現頁面跳轉,推薦閱讀:SpringBoot跳轉渲染頁

django載入cssjs內容

參考了以下內容: 官方文件 http://jingyan.baidu.com/article/db55b609a93b114ba30a2ffb.html 1. 新建一個目錄static,這個目錄與templates和manage.py都在同一個目錄下 2. 將css、js等

Jetty啟動時不能修改 js靜態檔案的解決

Jetty啟動後,如果修改javascript檔案,將不能儲存,使除錯很麻煩。這是因為使用了CACHE,JETTY說是WINDOWS下的一個限制。可以通過如下方法修正: 解壓出jetty.jar中的org/mortba

spring mvc 頁面訪問圖片或者js靜態檔案路徑出錯問題

這是web工程的結構,圖片放在images資料夾下,js檔案放在resource資料夾下 然後就是進行spring mvc的配置,我上一篇文章就有講到怎麼去配置,但只是

djangotemplate模板、static靜態檔案

將 新建app 'Helloworld' 新增到,settings.py中 INSTALLED_APPS 去:INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'djan

PythonWeb框架之Django網頁靜態檔案有效配置(CSSJS)

以我的專案舉例 專案名稱:PersonInfoManagerWebSystem 專案結構(圖) 關鍵配置 在PersonInfoManagerWebSystem二層目錄中的settings.py中,最後新增修改 # Static files (CSS, Java

web專案url-pattern改成'/'後jscss、圖片靜態資源(404)無法訪問問題解決辦法

1、增加靜態資源url對映 如Tomcat, Jetty, JBoss, GlassFish容器可以這樣定義 (注意一定要在所有servlet之前定義該類對映): <servlet-mapp

Django套用現成模板匯入cssjsimages檔案

環境 windows10 pycharm2017.3.3 professional edition(必須專業版) python3.6.4 django2.0.2 參考資料 方法

Django簡單添加HTML、cssjs文件

htm djang .py 項目 移動 資源 默認 alt templates 首先申明下自己的環境, python版本3.65 Django版本1.11.15 創建默認Django項目後 首先說下添加Html 在urls.py文件中添加如圖代碼,照抄也

python學習之網站的編寫(HTMLCSSJS)(十一)----------如何利用其它html檔案CSS(也就是可以將共同的地方提取出來放大一個檔案利於使用)

首先說一下它的具體用處,我們已經知道,當我們寫一個html檔案的時候,不同的標籤想用相同的版式的時候,我們可以將它提取出來,然後再用一些選擇器進行應用,比如class選擇器。但是,但我們編寫多個html檔案中的時候,多個檔案都想用一些相同的版式該怎麼辦呢? 那麼就引入了這種連線的方式,首先寫一個

SpringMVC框架下前端jsp頁面引入jscssimg檔案失敗的問題

初學mvc,今天在做一個小模組的時候發現jsp前端頁面寫的jquery語句無效,查了之後在發現要在jsp的page屬性里加上一個isELIgnored="false"    的屬性,然而加上之後還是用不了引入的.js,  .css, .jpg等格式的檔案,怎麼辦呢,又去查資料

python2.7的flask框架之引用js&css靜態檔案

動態 web 應用也會需要靜態檔案,通常是 CSS 和 JavaScript 檔案。理想狀況下, 我們已經配置好 Web 伺服器來提供靜態檔案,但是在開發中,Flask 也可以做到。 只要在我們的包中或是模組的所在目錄中建立一個名為 static 的資料夾,在應用中使用 /s