0

私は html とベース (すべてのページが拡張されている場所) で Web サイトを作成しています。ソーシャル ネットワーク アイコンのセッションを配置したいと考えています。このセッションは html に基づいているため、Web サイトのすべてのページに表示する必要があります。

このセッションを静的 html に入れたくありません。モデルを使用して django で行いたいです。これはすでに行われています。

質問: ソーシャル ネットワーク アイコンのセッションを各ビューに配置する必要がありますか? それとも、別のビューを作成して他のすべてのビューを拡張することはできますか? これどうやってするの?

4

2 に答える 2

1

包含タグを使用してみてください。セッションを作成するためのすべての作業を実行するための関数を作成し、それをHTMLの特定のブロックに関連付けることができます。

templatetags / session.py

@register.inclusion_tag('includes/session_box.html')
def output_session_box(...):
    ...
    return { .. }

関連するテンプレートファイルincludes/session_box.htmlには、他のテンプレートと同じようにHTMLが含まれます。

そして、base.htmlには次のようになります。

{% load session %}
{%  output_session_box ... %}
于 2012-10-22T20:42:08.140 に答える
0

RequestContextおよびを使用して、を使用context_processorしてすべてのビューにテンプレート変数を挿入しRequestContextます。

これは、Python関数requestが引数として受け入れ、テンプレートに渡される辞書を返すのと同じくらい簡単です。

https://docs.djangoproject.com/en/dev/ref/templates/api/#django.template.RequestContext

def my_processor(request):
    return {'foo': 'bar'}

TEMPLATE_CONTEXT_PROCESSORS = (
     # add path to your context processor here.
)

私は通常、基本的なプロジェクトごとのプロセッサを持っています...それはまさにdjangoがすべてのテンプレートに追加{{ user }}する方法です。{{ STATIC_URL }}

于 2012-10-22T20:41:53.277 に答える