django-staticfiles

Warning

このドキュメントは django-staticfiles の翻訳です。

これは静的ファイルを配信するためのヘルパーを提供するDjangoアプリケーションです。

ほとんどのDjango開発者は、ウェブアプリケーションにはリクエスト毎に新しくビューやテンプレートをレンダリングする動的な部分があって、それ以外にも、一つのウェブページの全て表示するためには画像、CSS、JavaScriptなどの静的なメディアファイルを扱う部分もあるということも考慮しなければいけません。

小さなプロジェクトでは、これは重要なことではない。なぜなら、Webサーバがメディアファイルの置いている場所を見つけることができるように置いておくだけだからです。しかしより大きなプロジェクト(特に複数のアプリケーションで構成される場合)では、個々のアプリケーションが複数の静的ファイルをまとめて使うと複雑になってきます。

静的ファイルとは何を指しているのでしょう? :

Djangoアプリケーションの個々の静的ファイルを一つの場所(他に指定した任意の場所)に集めることは本番環境で静的ファイルを配信することが容易になります。

django-staticfilesのメインのウェブサイトは github.com/jezdez/django-staticfiles で、チケットを作成することもできます。

Note

django-staticfilesはDjango 1.3から django.contrib.staticfiles としてDjangoの一部になりました。

django-staticfilesの0.3.Xは1.0のリリース後はセキュリティとデータがなくなるバグのバグフィックスしか行いません。 Django 1.2.X で 0.3.X 以下のバージョンを使っている場合は、django-staticfilesのバージョン1.0以上を使うかDjango 1.3のstaticfilesにアップグレードしてください。

django-staticfilesで先に新しい機能がリリースされるので、django-staticfilesを使いたい場合は、Django付属のstaticfilesアプリケーションの代わりにdjango-staticfilesを使うことができます。

インストール

  • PyPI から staticfiles をインストールするための好きなPythonのパッケージツールが使えます。例として

    pip install django-staticfiles
    

    pip install django-staticfiles==dev とすると、django-staticfilesの in-development version をインストールすることができます。

  • INSTALLED_APPS"staticfiles" を追加して下さい。

    INSTALLED_APPS = [
        # ...
        "staticfiles",
    ]
    
  • STATIC_URL に静的ファイルを配信させたいURLを設定して下さい。

    STATIC_URL = "/static/"
    
  • 開発モード(DEBUG = True の時)の時に、 runserver コマンドで静的ファイルを自動的に配信します。

    python manage.py runserver

  • サイトの全ての静的ファイルをデプロイする準備ができたら、 collectstatic 管理コマンドを使って下さい。

    python manage.py collectstatic
    

    デプロイするディレクトリ(STATIC_ROOT)に配信するための設定方法は、ウェブサーバーのドキュメントを見てください。

  • (オプション) Djangoのadminアプリケーションを使う場合は、 ADMIN_MEDIA_PREFIX の設定を STATIC_URL のサブパスに正しく設定して下さい。

    ADMIN_MEDIA_PREFIX = STATIC_URL + "admin/"
    

django.contrib.staticfiles との違い

Djangoの staticfiles では サポートしていない django-staticfiles の機能:

  • Django 1.2.X で動作します。
  • STATICFILES_EXCLUDED_APPS は、静的ファイルを探す時に、無視すべきものをドット区切りのアプリケーションのパスのシーケンスで指定します。
  • STATICFILES_IGNORE_PATTERNS は、 collectstatic を実行した時に無視するファイルやディレクトリのパターンを指定します。
  • 静的ファイルのファインダは、ほとんどのサードパーティのアプリケーションの静的ファイルの場所をサポートします。

より詳細な情報は 設定 を見てください。