1

次を使用してテンプレートにサイト名をロードしたいと思います。

{{ SITE_NAME }}

setting.pyが持っている:

SITE_NAME = "MySite"

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP

TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.core.context_processors.request',
)

また、クラスベースのビューを使用してビューをロードしています ( views.py):

from django.views.generic import TemplateView

class MenuNavMixin(object):
    def get_context_data(self, **kwargs):
        context = super(MenuNavMixin, self).get_context_data(**kwargs)
        return context


class AboutView(MenuNavMixin, TemplateView):
    template_name = "home/about.html"

urls.py:

url(r'^about/$', AboutView.as_view(), name='about'),

次のようにコンテキスト変数に具体的に追加SITE_NAMEしない限り、アクセスできません。home/about.html

import mywebsite.settings

class MenuNavMixin(object):
    def get_context_data(self, **kwargs):
        context = super(MenuNavMixin, self).get_context_data(**kwargs)
        context['SITE_NAME'] = mywebsite.settings.SITE_NAME
        return context

私が使用した場合、これは当てはまらないと思いました:

TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.core.context_processors.request',
)

誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

0

何があなたにその印象を与えたのかわからない。requestコンテキスト プロセッサは、ティンに書かれていることを正確に実行します。リクエストをコンテキスト プロセッサに追加します。SITE_NAME 設定で何かを行うと言うものは何もありません - 特にそれは標準設定でさえないため.

これをコンテキスト プロセッサで追加したい場合は、独自のコードを記述できます。コードは 2 行だけです。

于 2014-03-31T11:03:33.893 に答える