Djangoの管理画面用メディアファイル

2007/04/06 02:10

※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】

運用開始時に結構 はまり やすいので、メモをしておきます。

静的ファイル配信の思想

Djangoを 運用する際には、メディアファイルは別の静的ファイル配信サーバからサーブすべし 、というのがDjango開発者達の思想です。

つまり、推奨されるやり方は管理画面メディアファイル配信サーバとして別サーバを指し示し、メディアファイルは配信サーバにコピーしておくことです。

開発時の仕組み

デフォルトのADMIN_MEDIA_PREFIXは /media/ となっています。開発サーバは起動時にメディアファイルを配信するようにハンドラを設定します。

面白いことに、ADMIN_MEDIA_PREFIXの設定を、 /adminmedia/ 等に変更しても、開発サーバ上では正しく動作します。

これは、ADMIN_MEDIA_PREFIXの値が、管理画面のcssを指し示すURLのプリフィックスだからです。もちろん開発サーバのハンドラも同じ値を見ています。

推奨される設定

推奨されない設定

しかし、管理インターフェースのメディアファイルについては量も頻度もたいしたことないので、以下のようにしても良いのではないかとも思う(イマイチな方法)。

ADMIN_MEDIA_DIR という定数を settings.py に定義する。指し示し先は管理画面用のメディアファイルディレクトリ (django/contrib/admin/media) のフルパス。

次に urls.py で Django が静的ファイルを返すように設定する。

  (r'^media/(?P.*)','django.views.static.serve',
    {'document_root' : settings.ADMIN_MEDIA_DIR, 'show_indexes':False})

Prev Entry

Next Entry