Python 使用Django 1.4从模板访问setting.py中的变量

Python 使用Django 1.4从模板访问setting.py中的变量,python,django,django-class-based-views,requestcontext,Python,Django,Django Class Based Views,Requestcontext,我想使用以下方法将网站名称加载到模板中: {{ SITE_NAME }} 在setting.py中,我有: SITE_NAME = "MySite" 及 我还使用基于类的视图加载我的视图(Views.py): url.py: from django.views.generic import TemplateView class MenuNavMixin(object): def get_context_data(self, **kwargs): context =

我想使用以下方法将网站名称加载到模板中:

{{ SITE_NAME }}
setting.py
中,我有:

SITE_NAME = "MySite"

我还使用基于类的视图加载我的视图(
Views.py
):

url.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"
url(r'^about/$', AboutView.as_view(), name='about'),
我无法访问
home/about.html
中的
SITE\u NAME
,除非我特别使用以下内容将其添加到上下文变量中:

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',
)

有人能给我指出正确的方向吗?

不知道是什么给你留下了这样的印象。
请求
上下文处理器完全按照tin上的说明执行:将请求添加到上下文处理器。没有任何迹象表明它将与站点名称设置有任何关系——特别是因为这甚至不是一个标准设置


如果希望由上下文处理器添加,则可以编写自己的-只需两行代码。

django.core.context\u processors.request
仅将请求添加到上下文中,请参阅

编写您的上下文处理器,如:

from django.conf import settings    

def add_site_setting(request):
  return {'site_name': settings.SITE_NAME}
然后将该函数添加到settings.py中的
TEMPLATE\u CONTEXT\u PROCESSORS

另外,我建议养成一个好习惯,使用django.conf导入设置中的
,而不是显式导入设置文件。

我以前的回答:
from django.conf import settings    

def add_site_setting(request):
  return {'site_name': settings.SITE_NAME}