0

すべてのテンプレートでグローバルにアクセスできるデータベース駆動型ディクショナリを宣言する必要があります。これは、すべてのテンプレートでグローバルに必要なため、ビューに依存しないようにする必要があります。

コンテキストプロセッサを書くのに疲れました

しかし、settings.py にコンテキスト プロセッサを追加している間

TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.contrib.messages.context_processors.messages',
'django.core.context_processors.request',
'myapp.context_processors.myfunction",
)

何度もロードし続けます。次に、その問題を経て、コンテキストプロセッサが RequestContext を介してロードされるため、 RequestContext を複数回呼び出しているため、ロードし続けることがわかります。

それで、一度定義してテンプレートでグローバルにアクセスできる方法はありますか?これも私のサイトのパフォーマンスを妨げません

myfunctionのようになります:

from ipc.declarations.models import MainDeclaration
from django.shortcuts import get_object_or_404

def myfunction(request):
    declarationId = 2991
    declaration = get_object_or_404(MainDeclaration, pk=declarationId,  user=request.user.id)
    return {'sectionGlobal': declaration}
4

1 に答える 1

0

コンテキスト プロセッサは一種の使いすぎです...その理由がわかりました。非常にシンプルで軽量なもの (リンク挿入設定など) にのみ使用することをお勧めします。

ビューによって提供されないデータにテンプレートがアクセスできるようにする正しい方法は、独自のテンプレート タグを記述することです。この場合、単純な割り当てタグで十分です。

https://docs.djangoproject.com/en/1.6/howto/custom-template-tags/#assignment-tags

于 2013-11-15T11:39:57.220 に答える