2016-03-18 9 views
3

私はWebページで作業しています。 footerにメールまたは電話のような連絡先があります。このfooterはどこでもよいはずですので、それぞれtemplate/htmlで拡張されているbase.htmlにあります。データベースからbase.htmlテンプレートに変数を入れる方法は?

私はContactAdminというテーブルを作成し、管理者が連絡先情報を変更するための簡単でわかりやすいインターフェースを提供しました。そして、ここに問題があります。

base.htmlは、ビューを持たない(それだけ拡張するためである)ので、私はそこに変数に置く方法がわからない - テーブルContactAdminからemailtelephoneを。私はそれを私の意見では巨大な過度の誇張であるあらゆる視野に入れることを考えました。

どうすればDjangoこの変数をデータベースから読み込んでbase.htmlに入れるのですか?

ContactAdminの表は、あなたはすべてのビューを編集する必要がいけないただ一つの行

答えて

2

。例えば:

yourapp/context_processors.py

def contact(request): 
    from yourapp.models import ContactAdmin 
    contacts = ContactAdmin.objects.all() 

    return { 
     'contacts': contact, # Add 'contacts' to the context 
    } 

yourproject/settings.py

TEMPLATES = [ 
    { 
     ... 
     'OPTIONS': { 
      'context_processors': [ 
       ... 
       'yourapp.context_processors.contact', 
      ] 
     } 
    } 
] 

私は、これらの連絡先の設定は非常に頻繁に変更するつもりはないと思います。クエリの結果もcachingに興味があります。

4

を持つ必要があります。このシナリオの場合、djangoはtemplate context processorsです。ここでの利点は、基本テンプレートがまだテンプレート言語の一部であり、Contextにアクセスできるため、カスタムコンテキストプロセッサでこれらの変数を設定するだけで、すべてがそのまま動作することです。

カスタムコンテキストプロセッサを書き込む方法についてのいくつかの例:あなたは、この目的のためにコンテキストプロセッサを使用することができます

関連する問題