2012-03-22 17 views
2

一般的に、私はDjangoとWebプログラミングには初めてです。グーグルでは、私は必要な答えを見つけることができませんでした。ここにその例があります:継承されたDjangoテンプレートのQueryset

私は、ユーザーが記録されているすべてのページに特定のナビゲーションメニューがあるサイトを持っています。そのため、base.htmlを拡張しているbase_logged.htmlというテンプレートを拡張しています。 問題は、ナビゲーションメニューがデータベースクエリによって部分的に設定されていることです。

ログに記録された各ビューでクエリを作成せずにこれを設定する方法はありますか? または継承を表示するには?

私の貧しい私の英語のために申し訳ありません。

答えて

3

もう1つの方法は、カスタムテンプレートタグ(おそらくinclusion tag)を作成してそれをベーステンプレートに入れることです。

だからあなたの基本テンプレートでは、このようなものかもしれない:

{% navigation_bar user %} 
0

context processorsHere's a good example)を使用できます。これにより、サイト全体のあらゆるビューで変数(クエリーセットなど)を利用できるようになります。

some_app.context_processors.my_context_processor.py

from some_app.models import Bar 
def my_context_processor(): 
    return { 
     'foo' : Bar.objects.all(), 
    } 

、今お使いのsettings.py

TEMPLATE_CONTEXT_PROCESSORS = (
    ... 
    'some_app.context_processors.my_context_processor', 
    ... 
) 

、あなたに:たとえば、アプリのいずれかでファイルを作りますすべてのビュー/テンプレートにアクセスできます:

{{ foo }} 
+0

素敵ですね。私はそれを試し、私の経験を投稿します。すべてのページがクエリで意味をなさないわけではありませんか?クエリはユーザに基づいているため... – lembon

+0

'... def my_context_processor(request): ...' –

関連する問題