牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

勝手にチュートリアル4.1.1 { MEDIA_URL }を使う

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