web-dev-qa-db-ja.com

djangoテンプレートのリクエスト

Djangoリクエストプロセッサを有効にしました

TEMPLATE_PROCESSORS = (
"Django.core.context_processors.auth",
"Django.core.context_processors.debug",
"Django.core.context_processors.i18n",
"Django.core.context_processors.media",
"Django.core.context_processors.request",
)

それでも、テンプレートで使用可能な変数を要求する必要はありません。手動で渡す必要があります。 Django 1.0.2を使用するWeb上のどこでも、有効なリクエストプロセッサについてのみであるようです。

また、私はRequestContextを次のように使用しています:

 return render_to_response(
    'profile.html',
    {
        'persons':Person.objects.all(),
        'person':Person.objects.get(id=id),
         'request':request,
    },
    context_instance=RequestContext(request)
)

運がない

ああ、その新しい名前はTEMPLATE_CONTEXT_PROCESSORS

21
Attila

settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
  # ...
  'Django.core.context_processors.request',
  # ...
)
41
Dingo

TEMPLATE_PROCESSORSの代わりにTEMPLATE_CONTEXT_PROCESSORS

11
Attila

Django 1.8の時点で、これは「TEMPLATES」設定に変更されており、デフォルト構成では、リクエストプロセッサは含まれていません。

TEMPLATES = [
{
    'BACKEND': 'Django.template.backends.Django.DjangoTemplates',
    'DIRS': [
        # insert your TEMPLATE_DIRS here
    ],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            # Insert your TEMPLATE_CONTEXT_PROCESSORS here or use this
            # list if you haven't customized them:
            'Django.contrib.auth.context_processors.auth',
            'Django.template.context_processors.debug',
            'Django.template.context_processors.i18n',
            'Django.template.context_processors.media',
            'Django.template.context_processors.static',
            'Django.template.context_processors.tz',
            'Django.contrib.messages.context_processors.messages',
        ],
    },
},]

問題を修正するには、リクエストプロセッサを再度追加するだけです。

'Django.core.context_processors.request',

詳細については、 Django Upgrade Docs を参照してください。

6
MontyThreeCard

テンプレートで使用できるrequest変数がないのですか?行を削除するとどうなりますか

'request':request,

それはその行が存在するときとは異なります。テンプレートがどちらの方法でも同じように読み込まれる場合、問題はテンプレートにあります。

0
David Berger

MIDDLEWARE_CLASSES =(... 'yourfolder.yourfile.yourclass'、... yourclass:

クラスAddRequestToTemplate:process_templaet_response(self、request、response):response.context_data ['request'] = request

0
Danil