django模板導入外部js和css等文件


1.新建文件夾templates(存放模板文件),新建文件夾media(存放js、css、images文件夾),並把兩個文件夾放到了項目的根目錄下

 2.設定模板路徑

設置模板路徑比較簡單,只要在setting.py里面的TEMPLATE_DIRS選項里面添加:

import os.path TEMPLATE_DIRS = ( os.path.join(os.path.dirname(__file__), '../templates').replace('\\','/'), )

這步的意思就是,在網站項目的根目錄下,有一個templates文件夾,里面放置所有的模板

 

3.設定CSS/JS/IMAGES等路徑

1)同樣,在setting.py里面,指定根目錄下面的media路徑:

STATIC_PATH= os.path.join(os.path.dirname(__file__), '../media').replace('\\','/')

 

2)在urls.py里面設定以下語句(注意:假如在blog應用中新建了一個urls.py文件,那么應該添加到blog目錄下的urls.py文件):,將請求CSS/IMAGES/JS的URL轉到該地方:

from django.conf import settings (r'^site_media/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATIC_PATH}),如:

(r'^css/(?P<path>.*)$', 'django.views.static.serve',{'document_root': '/var/www/django-demo/css'}),

 
         

(r'^js/(?P</path><path>.*)$','django.views.static.serve', {'document_root': '/var/www/django-demo/js'}),

 
         

(r'^images/(?P</path><path>.*)$','django.views.static.serve', {'document_root': '/var/www/django-demo/images'}),

 

  

4.最后,在模板中,已經可用以下方法訪問CSS/IMAGES/JS等

<link href="/site_media/style/style.css" rel="stylesheet" type="text/css" /> <img src=’/site_media/images/a.jpg’> <script src=’/site_media/js/b.js’> </script>

遇到的問題 

問題1:
django 1.10 urls.py配置static靜態文件的鏈接
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}, name='static'),
報錯:raise TypeError('view must be a callable or a list/tuple in the case of include().')
 
解決方法:
改成下面的 格式
from django.views import static from 工程目錄 import settings url(r'^static/(?P<path>.*)$', static.serve, {'document_root':settings.STATIC_ROOT}, name='static'),
 
原因:django 1.10 url的格式變了,需要引入view對象,然后調用view對象中的方法,不能直接用字符串的形式了
 
問題2:
訪問靜態文件時,報下面的錯誤
django.core.exceptions.ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting
 
解決方法:
修改settings.py文件,將STATICFILES_DIRS中包含的STATIC_ROOT的路徑刪除掉
 
比如我的STATICFILES_DIRS原來包含了../webManage/static/,而我實際上是用這個地址作為我的靜態資源文件地址
STATICFILES_DIRS = (
    # 動態的獲取static文件的路徑,注釋掉STATIC_ROOT的路徑 # os.path.join(os.path.dirname(__file__), '../webManage/static/').replace('\\', '/'), os.path.join(os.path.dirname(__file__), '../static/').replace('\\', '/'), os.path.join(os.path.dirname(__file__), '../static/js/').replace('\\', '/'), )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM