生產與開發環境下的Django靜態文件配置

    受Django版本更新的影響,其靜態文件配置很亂,網上有各類說法,其實大多有道理的,只是沒說明是針對哪一個版本的Django。但1.4版本(可能包括其以後的版本)靜態文件配置至關簡單,在此記錄下。 html

    開發環境  

     以Django 1.4.5版本舉例,在Pycharm 2.7.3上開發(爲Pycharm打下廣告,這貨還真不賴,對Django的支持至關好,就連移動模板位置她都會自動跟蹤),步驟以下:
  • 新建Django project untitled,
  • 再用manage.py startapp hello建一個hello app,
  • 最後在hello app下建一個static目錄用來存放靜態文件,
  • 運行manage.py runserver,訪問http://127.0.0.1:8000/static/a.txt,就成功訪問靜態文件了,
  • 目錄結構以下:
│  manage.py
│
├─hello
│  │  models.py
│  │  tests.py
│  │  views.py
│  │  __init__.py
│  │
│  └─static
│          a.txt
│
├─templates
└─untitled
        settings.py
        urls.py
        wsgi.py
        __init__.py

    以上的靜態文件訪問無需對Django作任何配置,因Django自動開啓了settings.py文件下INSTALLED_APPS的'django.contrib.staticfiles'。這裏並未在urls.py裏設置如下的代碼,雖網上不少說這是必需的,但至少在1.4版本下是非必需的 python

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    urlpatterns += staticfiles_urlpatterns()

    如今可以確認的是Django處理靜態文件的是下面這個庫文件:
shell

\Lib\site-packages\django\contrib\staticfiles\finders.py

    生產環境

    生產環境下通常是把靜態文件放在項目根目錄下的static目錄下。以百度應用引擎(BAE)爲例: django

  • 在項目根目錄下建立如上面的的示例代碼中的目錄static,並在settings.py中相應設置目錄
  • 運行Django腳本manage.py collectstatic,收集全部靜態文件至其之下,方便服務器處理
  • 在BAE的app.conf中配置靜態文件映射,
    其實自己靜態文件是交給Nginx之類的服務器處理映射的,但在開發環境下Django爲方便開發,能夠用內置的服務器代爲處理,因此纔有了以上的兩種配置。

    PS:測試過程當中發現BAE竟對靜態文件的後綴名大小寫敏感,本地開發環境下卻沒有此現象。 服務器

參考:
http://blog.yangyubo.com/2012/07/26/django-staticfiles/
http://www.cnblogs.com/bourneli/archive/2013/01/21/2869327.html app

相關文章
相關標籤/搜索