静的ファイルの{{MEDIA_URL}}がうまく反映されなかった話

バッドノウハウらしいがおれにはよくわからぬ。先人の道をコピペするのみ。

もともとこれを参考にしてた

tokibito / python-hackathon4-django / commit / 1ed9b0fd4b5d — Bitbucket
この場合はcssだけど画像ファイルを置く必要があったのでこれをパクろうとしたのだけどうまくいかなかった。

解決方法

以下をsettings.pyに追加

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
   'django.contrib.messages.context_processors.messages',
)

なんかよくわかんないけどできた

TEMPLATE_CONTEXT_PROCESSORSがグローバルななんかっぽい動きをするのはいいとして、それがなんかハマりポイントらしい。
ちなみにrender_to_responseよりdirect_to_templateを使うほうがなにかといいらしい。

xxxxx :wrote
direct_to_templateはRequestContextを自動的に生成してくれるので楽なんだけど
RequestContextはTEMPATE_CONTEXT_PROCESSORSに設定されたコンテキストプロセッサ(生成用の関数)を使います
で、MEDIA_URLは
django.core.context_processors.media
これが必要です