在用Django 作項目時,若是在本地調試的狀況下,咱們會開啓 settings.py 中的 DEBUG = True
同時咱們還會作以下操做:
1. 設置 STATIC_ROOT = os.path.join(os.path.dirname(__file__),'static')
2.設置 STATIC_URL = '/static/'
以上兩步我想通常都會提到,但即便你作了這樣的配置,當你在瀏覽器中瀏覽你的CSS或JS 文件,仍然是 404 錯誤,說明路徑錯誤,根本找不到。
好比個人工程以下:
你若是輸入http://localhost:8000/static/js/myjs.js確定出錯。通過屢次試驗,按以下方法能夠解決
配置STATICFILES_DIRS
好比個人工程配置以下:javascript
STATICFILES_DIRS = (
('css',os.path.join(STATIC_ROOT,'css').replace('\\','/') ),
('js',os.path.join(STATIC_ROOT,'js').replace('\\','/') ),
('images',os.path.join(STATIC_ROOT,'images').replace('\\','/') ),
('upload',os.path.join(STATIC_ROOT,'upload').replace('\\','/') ),
)
css
注意前面的css,js,images,upload 必定要與你的目錄結構名稱保持一致。
配置好了你再次啓動django ,而後訪問:http://localhost:8000/static/js/myjs.js就看到結果了,說明找到路徑,一樣css,image圖片均可以找到了.
早模板中的使用java
<script type="text/javascript" src="/static/js/myjs.js"></script>
python
採用這種方式就能夠了。css與圖片一樣的道理。
注意在上訴狀況下,只能在開啓 DEBUG=True 時才能生效,在咱們開發的時候很方便。若是設置DEBUG=False 將不會生效。這種狀況時,要採用生產環境的 配置。用web application server 來處理這些靜態的圖片,css,以及js文件。
生產環境的處理
1.設置 DEBUG=False
2.能夠不用配置STATICFILES_DIRS
3.配置web application server ,好比我用 nginx:nginx
location ^~ /static {
root /opt/www/MyNet;
}
web
這樣,就天然找到static路徑,不用 django去處理了。若是想配置生產環境的,能夠參考我寫的另外一篇文章:生產環境上配置django
備註:我看到有的文章在urls.py 中進行配置,確實能夠,但我以爲這不是個好方法。好比:django
MEDIA_ROOT=os.path.join(os.path.dirname(__file__),'media').replace('\\','/') #若是是*nix系統,不須要replace函數
MEDIA_URL='/media/' #末尾必定要加上/
ADMIN_MEDIA_PREFIX = '/media/admin/' #填啥均可以,就是不能跟MEDIA_URL同樣
瀏覽器
而後app
(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT})
函數