« Djangoのmodelsって何なのさ? | メイン | テンプレート上でのMEDIA_URL呼び出しについて その2 »

テンプレート上でのMEDIA_URL呼び出しについて

2007年03月19日|category : 言語
このサイトをはてなブックマークに追加 newsing it! この記事をクリップ! Save This Page to del.icio.us Buzzurlにブックマーク

皆様こんばんは。
土日に寝込んでいた際に今話題のタミフルの怖さを少し垣間見た中田です。

skyfishの開発にあたり、Djangoの事は基本的に例の聖地
先日のdevcampで触らせて頂いた『Workstyle』のソースを参考にしながら日々作業しているのですが、
テンプレート上からMEDIA_URLを{{MEDIA_URL}}みたいに呼び出そうとした際、
実際に表示された画面のHTMLソースを見ても、上手く呼び出せていない様子。。。

とりあえず、『Workstyle』と聖地をチラ見しつつ設定したのは

↓settings.pyで↓
MEDIA_ROOT = '/home/skfs/skyfish/'
MEDIA_URL = 'http://localhost:8000/skyfish/'
ADMIN_MEDIA_PREFIX = '/skyfish/'

とか何とか設定しつつ、
過去ログを参照するとMEDIA_URLとADMIN_MEDIA_PREFIXがカブってるとマズいみたいなので
ADMIN_MEDIA_PREFIXの指定を変えたりしてみました。

・・・が、テンプレート上に{{MEDIA_URL}}を記述してみても何も表示されず_| ̄|○

urls.pyにも(各viewを呼び出す)最低限の記述だけはしてあるのですが、
他に何か設定があるんでしょうか・・・。
※もしかすると、ものっっっすごい初歩的なところで地雷を踏んでいるのかもしれませんが、
その時はごめんなさい 。・゚・(ノД`)・゚・。

posted by nakata | permalink | comments (5) | trackbacks (0)

コメント

WorkStyleの場合は、RequestContextでsettingsのいくつかの設定をコンテキストに持たせています。
RequestContext自体の設定もdjango.conf.global_settingsから無理矢理コピペして増やしています。
実は、以下のように設定できるに違いありません。
from django.conf.global_settings import CONTEXT_PROCESSOR
CONTEXT_PROCESSOR = CONTEXT_PROCESSOR + ('hoge.context_processor.func',)

ちなみに、テンプレートでURLを美しく記述する方法が発明されているような気もしますが、そこはあまり追っていないので…。urls.pyから逆参照するタグだったかも?

あ、それはとても勘違いをしています。
MEDIA_ROOTをテンプレートで呼ぶときeveresさんはコンテキストプロセッサを使用していたはずです。

workstyle/ws/context_processor.pyを見ると一目瞭然です:-)

また、settings.pyのTEMPLATE_CONTEXT_PROCESSORSを参照してみてください。

詳細は...

Python プログラマのための Django テンプレート言語ガイド : Django オンラインドキュメント和訳
http://michilu.com/django/doc-ja/templates_python/

この辺を見てみてください。

context_processors
の設定はしてますか?

http://django.g.hatena.ne.jp/uemu/20070112/1168576942

settings.TEMPLATE_CONTEXT_PROCESSORS に 'workstyle.ws.context_processor.workstyle_context' が追加されてますので、これじゃないかなと。

つい先日 custom tag で同じことをやってましたが TEMPLATE_CONTEXT_PROCESSORS の方が良さそうですね。やり直してみようっと。

>everesさん
>voluntasさん
>uemuraさん
>MiCHiLUさん

すみません、レスが遅くなりました(ノД`)
皆様(ほぼ)全員一致で「context_processors設定した?」な感じのレスを
頂きましたが、まさにご指摘の通りでして、まっっったく設定どころか
意識もしておりませんでした・・・。(軽いタッチで呼び出せるもんだと思ってた)

とりあえず、教えて頂いたサイトetcを参考にまずは自分で設定した
context_processorを呼び出せるように、という所からやってみようと思います。

有難うございました m(_)m

コメントを投稿

(承認されるまでコメントが表示されない場合があります)