ヘルパー関数

コンテキストプロセッサ-

static コンテキストプロセッサ

context_processors.static()

コンテキストプロセッサは {{ STATIC_URL }} に変数としてテンプレートに STATIC_URL を追加します。 それを使うためには、 TEMPLATE_CONTEXT_PROCESSORS の設定のどこかに 'staticfiles.context_processors.static' があるか確認して下さい。

RequestContext は任意のコンテキストプロセッサによって集められたデータにアクセスしてテンプレートをレンダリングすることしかしないことを覚えていて下さい。

テンプレートタグ

static

templatetags.staticfiles.static()

New in version 1.1.

相対パスを与えて、完全なURLを作成するために設定済みの STATICFILES_STORAGE ストレージを使います。例として

{% load staticfiles %}
<img src="{% static "css/base.css" %}" />

上の例は、 "css/base.css"STATICFILES_STORAGE のインスタンスの url メソッドを実行するのと同じことです。 ローカルではないストレージバックエンドから deploy files to a CDN に使う時は特に有効です。

get_static_prefix

templatetags.static.get_static_prefix()

RequestContext を使っていない場合、テンプレート内で STATIC_URL 、代わりに get_static_prefix テンプレートタグを使えます。

{% load static %}
<img src="{% get_static_prefix %}images/hi.jpg" />

複数回使う場合は、余分な処理を避けるために二つ目の方法も使えます。:

{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

<img src="{{ STATIC_PREFIX }}images/hi.jpg" />
<img src="{{ STATIC_PREFIX }}images/hi2.jpg" />

get_media_prefix

templatetags.static.get_media_prefix()

get_static_prefix() と似ていますが、代わりに MEDIA_URL の設定が使えます。

ストレージ

StaticFilesStorage

class storage.StaticFilesStorage

FileSystemStorage クラスのサブクラスで、 STATIC_URL をベースのURLとして、 STATIC_ROOT の設定をファイルシステムのベースの場所として使われます。

post_process(paths, **options)

New in version 1.1.

このメソッドはコマンドラインオプションと同じように、 collectstatic 管理コマンドによって呼び出された後、見つかったファイルのパスが渡されて処理されます。

CachedStaticFilesStorage クラスは、背後でハッシュ化されたパスの置き換えとキャッシュを適切にアップデートします。

CachedStaticFilesStorage

class storage.CachedStaticFilesStorage

New in version 1.1.

StaticFilesStorage クラスのサブクラスはファイルの内容のMD5ハッシュをファイル名に付けて保存して、ファイルをキャッシュします。例えば、 css/styles.css ファイルは、 css/styles.55e7cbb9ba48.css として保存されます。

このストレージの目的は、あるページにおいて、サードパーティのプロキシサーバーによってキャッシュされた古いファイルを参照してファイルを配信し続けることです。さらに、訪問済みのページで読み込み時間をスピードアップするためにデプロイしたファイルに far future Expires headers を適用したい場合は、非常に便利です。

ストレージバックエンドは、(post_process() メソッドを使って)キャッシュされたコピーのパスで他の保存されているファイルにマッチしたファイルを探すパスを自動的に書き換えます。 正規表現を使うとこれらのパス Cascading Style Sheets の文 例えば、 'css/styles.css' ファイルです。

@import url("../admin/css/base.css");

CachedStaticFilesStorage ストレージバックエンドの url() メソッドを呼ぶことで、置き換えられます。

@import url("/static/admin/css/base.27e20196a850.css");

CachedStaticFilesStorage を有効化するために、以下を確認して下さい。 :

  • STATICFILES_STORAGE の設定は、 'staticfiles.storage.CachedStaticFilesStorage' に設定して下さい。
  • DEBUGFalse にして下さい。
  • staticfiles テンプレートで静的ファイルを参照するために static() というテンプレートタグを使います。
  • collectstatic 管理コマンドを使って全ての静的ファイル集めます。

MD5ハッシュを使ってサイトのパフォーマンスに負担がかかりますが、 staticfiles はDjangoのキャッシュフレームワークを使ってファイルのパスをキャッシュしようとします。もし、使っているストレージにキャッシュのオプションを上書きしたいなら、 ‘デフォルト’ のキャッシュバックエンドを使ってフォールバックします。

Static file development view

staticfiles.views.serve(request, path)

開発時に静的ファイルを配信するビュー関数です。

Warning

このビュー関数は DEBUGTrue になっている場合のみ有効になります。

なぜなら、このビュー関数は 非効率的セキュアではない からです。ローカルの開発環境でのみ使って、 本番環境では使わない で下さい。

このビュー関数は runserver (DEBUGTrue になっている場合)で自動的に有効化されます。別のローカルの開発サーバーでこのビュー関数を使う場合は、メインのURL設定の最後に次のようなスニペットを追加してください。

from django.conf import settings

if settings.DEBUG:
    urlpatterns += patterns('staticfiles.views',
        url(r'^static/(?P<path>.*)$', 'serve'),
    )

URLパターンの最初(r'^static/')は、 STATIC_URL で設定したものにして下さい。

URLパターン関数

staticfiles.urls.staticfiles_urlpatterns()

Warning

このヘルパー関数は、設定の DEBUGTrue の時と、 STATIC_URL が空ではなくて、 http://static.example.com/ のようにURLが指定されていない時に有効です。

URLパターンを設定することは面倒なので、あなたの代わりに設定してくれるヘルパー関数があります。

これは、既に定義したURKパターンのリストから静的ファイルを配信するための適切なURLパターンを返します。以下のように使います。

from staticfiles.urls import staticfiles_urlpatterns

# ... the rest of your URLconf here ...

urlpatterns += staticfiles_urlpatterns()