1. 程式人生 > >django處理靜態文件

django處理靜態文件

相對路徑 ews found django border 查找 nbsp details cut

轉載自 http://www.cnblogs.com/wswang/p/5519101.html

靜態文件指的是js css 還有圖片這些,配置方法如下

1. 在設置文件(settings.py)中,installed_apps中添加 django.contrib.staticfiles

然後設置static_url

1 STATIC_URL = ‘/static/‘

2. 在模板中的使用方式如下  

1 2 {% load staticfiles %} <img src
="{% static "my_app/myexample.jpg" %}" alt="My image"/>

這種方式提供的是一種相對路徑,當你將環境切換到CDN的時候會方便很多

當然也可以用簡單一些的方法---直接提供一個靜態文件的url,不過在CDN中就要修改才可以使用了

1 /static/my_app/myexample.jpg

3. 把你的文件都放在一個文件夾下,比如

1 my_app/static/my_app/myimage.jpg

  

註:當debug設置True的時候上面的方法可以,但是False的時候會提示not found的錯誤

當debug設置為Fales的時候,設置方法如下(增加靜態文件url,使用 django.contrib.staticfiles.views.serve()來尋找靜態文件):

1 2 3 4 5 6 from django.conf import settings from django.conf.urls.static import static urlpatterns = [
# ... the rest of your URLconf goes here ... ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

註:也不推薦實際環境中用  

當你有多個靜態文件目錄的時候可以使用下面的方式,設置STATICFILES_DIRS:

1 2 3 4 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ‘/var/www/static/‘, ]

註:django尋找靜態文件默認找到地一個就會返回,不再進行後續查找,所以要註意安排順序及目錄 

部署的步驟:

1. 設置STATIC_ROOT:

1 STATIC_ROOT = "/var/www/example.com/static/"

2. 執行collectstatic命令:

1 $ python manage.py collectstatic

這會把靜態文件拷貝到你設置的static_root目錄下(這樣可以更方便的和nignx集成,權限管理也更方便)

  

參考鏈接見(django文檔最詳細):

http://blog.csdn.net/WaitForFree/article/details/39815507

http://blog.sina.com.cn/s/blog_6c663fa50101gope.html

https://docs.djangoproject.com/en/1.9/howto/static-files/

https://docs.djangoproject.com/en/1.9/ref/contrib/staticfiles/#django.contrib.staticfiles.views.serve

django處理靜態文件