Django ====> 1.4版本靜態文件路徑設置--MEDIA_ROOT,MEDIA_URL, STATIC_ROOT, STATIC_URL學習


  • MEDIA_ROOT:主要是為了存放上傳的文件,比如在ImageField中,這個值加上upload_to的值就是真實存放上傳圖片的文件位置;Django里邊文件內容實際上是不會存放到數據庫里邊的,大多數數據庫存放數據效率低,需要保存在文件系統里。PS:FileUploads(用來存儲文件)
  • MEDIA_URL:URL的映射,前后要加上‘/’ 表示從根目錄開始,比如“/site_media/”,加上這個屬性之后,靜態文件的鏈接前面會加上這個值。
  • STATIC_ROOT:在這個文件里邊的目錄會當成靜態文件處理。但是不能把自己辛苦寫的Javascript或者圖片等靜態文件放進去。
  • STATIC_URL:URL映射,指定靜態目錄的URL,默認的是"/static/"。
  • STATICFILES_DIRS:指定一個工程里邊哪個目錄存放了與這個工程相關的靜態文件,是一個列表。如果列表中有一個是 “/home/shishang/test/static”,其中有一個文件內容是productlist.html, 我們只要訪問http://localhost:8000/static/productlist.html就可以直接訪問界面了。
  • :Django提供了一個方法自動地將所有的靜態文件放在一起。只要在寫App的時候創建一個static子目錄專門保存靜態文件就行了。在開發階段,不必費心去做映射,不需要配置urls.py。在布署到生產環境的時候,只需要配置Apache把/static/映射到STATIC_ROOT。然后運行manage.py collectstatic,自動地STATICFILES_DIRS列出的目錄以及各個App下的static子目錄的所有文件復制到STATIC_ROOT。因為復制過程可能會覆蓋掉原來的文件,所以,一定不能把我們辛苦做出來靜態文件放這邊!在開發階段,Django把/static映射到django.contrib.staticfiles這個App。staticfiles自動地從STATICFILES_DIRSSTATIC_ROOT以及各個App的static子目錄里面搜索靜態文件。一旦布署到開發環境上,settings.py不需要重新編寫,只要在Apache的配置文件里面寫好映射,/static將會被Apache處理。django.contrib.staticfiles雖然仍然存在,但因為不會接收到以/static/開始的路徑,所以將不會產生作用。不必擔心Django會使用處理速度變慢。另外,當settings.DEBUG is False的時候,staticfiles將自動關閉。
  • 具體代碼示例:
    #setting.py 中加入:
    
    import os
    HERE = os.path.dirname(os.path.dirname(__file__))
    
    MEDIA_ROOT = os.path.join( HERE, "../media").replace('\\', '/')
    MEDIA_URL = "/site_media/"
    
    STATIC_ROOT = os.path.join(HERE, "../static").replace('\\', '/')
    STATIC_URL = "/static/"
    
    STATICFILES_DIRS = ( os.path.join(HERE, "../app名字/static/").replace('\\', '/'), )  #和STATIC_ROOT最好路徑不要重疊
    #建議將靜態文件保存在app的static目錄中
    
    #urls.py中加入:
    
    from django.conf.urls.static import static
    from django.conf import settings
    
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    
    #這樣使用
    <link  type="text/css"  rel="stylesheet" href="/static/css/bootstrap.min.css"/> 
            <link  type="text/css"  rel="stylesheet" href="/static/css/bootstrap-responsive.css"/> 

     


免責聲明!

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



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