Djangoドキュメントのチュートリアルその4の続きを勝手にやってみた第1回の続き。
Djangoのtemplateで{ MEDIA_URL }の使い方。
(勝手にチュートリアル4.1 見ため編 - 牌語備忘録 - pygoの続き)
後々、静的なファイルパスを変えたりするとき便利になるはず。
generic_viewを使わないときは、ContextではなくRequestContextを使うそうなので以下手順。
setting.pyに下記を追加。
MEDIA_URL = '/static/' from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS TEMPLATE_CONTEXT_PROCESSORS = TEMPLATE_CONTEXT_PROCESSORS + ( 'mysite.context_processors.media', )
それから忘れずに
python manage.py syncdb
context_processors.py作成
そして、context_processors.pyをルートディレクトリに作成して中に以下を書く。
# -*- encoding: utf-8 -*- from django.conf import settings def media(request): return { 'MEDIA_URL': settings.MEDIA_URL, }
/polls/view.pyにRequestContext。
pollsフォルダのview.pyに
from django.template import RequestContext
を追加して、return render_to_responseの引数にcontext_instance = RequestContext(request)を追加。
例/変更前
return render_to_response('polls/index.html', {'latest_poll_list': latest_poll_list})
変更後(以下view.pyにあるreturn render_to_responseすべて修正)
return render_to_response('polls/index.html', {'latest_poll_list': latest_poll_list}, context_instance=RequestContext(request))
templateのbase.htmlを修正
変更前
<link rel="stylesheet" type="text/css" href="/static/css/style.css">
変更後
<link rel="stylesheet" href="{{ MEDIA_URL }}css/style.css" type="text/css">
- 参考にさせて頂いたサイト
感想
ちょっとした修正のつもりが、ハマりまくってかなり大変でした...orz