老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

django項目引用css的方法

小編給大家分享一下django項目引用css的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

網站制作、成都網站設計介紹好的網站是理念、設計和技術的結合。創新互聯建站擁有的網站設計理念、多方位的設計風格、經驗豐富的設計團隊。提供PC端+手機端網站建設,用營銷思維進行網站設計、采用先進技術開源代碼、注重用戶體驗與SEO基礎,將技術與創意整合到網站之中,以契合客戶的方式做到創意性的視覺化效果。

大多數初學者都會疑惑這樣一個問題:Django中如何引入css,html文件呢?問什么總是報錯呢?下面我們來探討一下這個問題。

這個問題出在以Djiango做后臺的前端界面上。按以往的習慣,css,js,image等靜態文件直接在前端html中寫好鏈接,直接丟上去就可以,但當把含外部css的html在丟到Django后發現,css并沒有載入,自然,其他靜態文件也是如此。

原因分析

出現這個問題其實是因為程序員太想當然了。在以往的php做后端的例子中,我們只要知道url就可以訪問網站根目錄下的任何文件。以外部css為例,在瀏覽器獲得html文件后會對資源進行鏈接,鏈接css文件時,將向服務器請求css的url對應的css文件,該css文件確實存在,于是服務器將之返回,瀏覽器成功鏈接到外部css文件。整個過程十分簡單。

那么為什么Django鏈接不到?原因出在一開始,css對應的url不存在。Django并不像php那樣可以訪問網站根目錄下的文件,它只會對路由所包含的路徑進行對應的響應。簡單來說,你隨便往Django根目錄丟給文件,在不編寫路由的情況下,是不可能通過url獲得的。同樣,如果嘗試訪問沒有寫進路由的css文件,那么返回只可能是404。既然資源404了,那么瀏覽器請求不到,導入失敗就是理所當然的。

解決方法

在settings.py中導入靜態資源

既然是url不存在,那么讓它存在就好。理論上只要把css對應的url編寫進路由使其返回css文件,那么就能請求到了。當然我不會這么干,因為,Django理所當然地提供了解決方案。

在settings.py的INSTALLED_APPS中,我們可以找到django.contrib.staticfiles這項,它的作用就是管理靜態文件。它的功能大致可以理解為將settings.py中的STATICFILES_DIRS列表中的路徑變為可訪問。同時對于路徑,django的settings.py中存在一個保存根路徑的變量:

BASE_DIRos.path.dirname(os.path.dirname(os.path.abspath(__file__)))

對于官方的解決方案,靜態文件是保存在根目錄下的static文件夾中,所以使用一個變量指向static文件夾(當然具體情況可以視實際路徑而更改):

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

然后,在settings.py中,存在這樣一個變量(如果沒有就自己加上吧):

STATIC_URL = '/static/'

這個變量的功能稍后再提。在這些準備好之后,就可以將靜態文件路徑加到STATICFILES_DIRS列表中了。比如,如果css文件相對static文件夾的路徑為“css/test.css”,那么寫入后:

STATICFILES_DIRS=[os.path.join(STATIC_ROOT,'css'),]

那么現在試著訪問路徑(以本地端口127.0.0.1:8000為例):127.0.0.1:8000/static/css/test.css,會發現成功獲取。同樣,在html文件link時寫 href="static/css/test.css",就可以成功獲得。

這里大概就能看出STATIC_URL的作用了。路徑中存在/static/這一部分,和STATIC_URL有沒有關系呢?

嘗試這樣修改:

STATIC_URL = '/stardust/'

再訪問127.0.0.1:8000/static/css/test.css,返回404。但改為訪問127.0.0.1/stardust/css/test.css,訪問成功。確認這個變量是靜態文件的url的目錄。

我們再嘗試將圖片文件添加進去。比如在static文件夾下有一個src文件夾保存圖片等文件,src/img文件夾保存圖片,其中有mio.jpg,于是如此修改:

STATICFILES_DIRS=[
    os.path.join(STATIC_ROOT,'css'),
    os.path.join(STATIC_ROOT,'src/img'),
    ]

訪問127.0.0.1:8000/static/src/img/mio.jpg,訪問成功。其他靜態資源添加方式也是如此,只用添加文件夾,就能訪問內部文件。

值得多提的是,STATICFILES_DIRSSTATICFILES_DIRS支持添加二元元組,第一個值作為url中的路徑,第二個值作為實際路徑舉個例子,將它如此修改

STATICFILES_DIRS=[
    ('css',os.path.join(STATIC_ROOT,'css')),
    ('img',os.path.join(STATIC_ROOT,'src/img')),
]

127.0.0.1:8000/static/css/test.css依然訪問成功,但是127.0.0.1:8000/static/src/img/mio.jpg訪問失敗。而訪問127.0.0.1:8000/static/img/mio.jpg卻能成功。就是這樣。

在上一步前提下使用html導入靜態資源

以css文件為例,在上一步做到后,href屬性寫為href="static/css/test.css"即可。不過django推薦的方案是使用模板導入。對于模板我的理解并不太少所以只貼方案。

現在文件前方使用{%load static %},之后在使用中(以同樣的css文件為例)如此寫:href="{%static '/css/main.css'%}"。這樣也可以成功訪問。如下是官方文檔給出的關于圖片的例子:

{% load static %}

其他靜態資源也是如此。

至此,Django導入靜態文件的問題得以解決。

以上是django項目引用css的方法的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!


新聞標題:django項目引用css的方法
URL標題:http://www.xueling.net.cn/article/jjgeio.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 成人免费xyz网站 | 欧美日韩日本国产 | 好男人好资源在线观看免费视频 | 青娱乐久草 | 女女女女bbbb毛片免费视频 | 99情趣网| 亚洲美女免费视频 | 日本一区二区影院 | 国产精品污WWW在线观看 | 麻豆一级视频 | 亚洲av日韩av高潮无码专区 | 三级aa毛片 | 久久精品无码中文字幕老司机 | 亚洲成人黄色在线观看 | 日本有色视频 | 欧美日韩视频在线观看一区 | 天天操人人射 | 免费成人在线观看视频 | 国产美女一级a作爱在线观看 | 欧美疯狂xxxx大交乱88av | 久久精彩 | 精品无码中文字幕在线 | 日本丰满少妇高潮呻吟 | 特级淫片裸体免费看 | 影视先锋AV资源噜噜 | 国产免费拔擦拔擦8x高清在线人 | 亚洲精品视频免费 | 亚洲国产精品久久无码中文字 | 亚洲性色av一区二区三区 | av之家免费黄片 | 中国1级毛片 | av爱爱com| 天天综合操 | 裸体女人高潮毛片 | 中文字字幕在线中 | 国产精品无码专区在线观看 | 久久一区二区三区av | 国产看片网址导航 | 日韩精品无码免费毛片 | 超碰免费在线播放 | 澳门一级毛片 |