访问变量设置.py从带有Django1.4的模板

2024-03-28 13:33:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用以下方法在模板中加载站点名称:

{{ SITE_NAME }}

setting.py我有:

^{pr2}$

以及

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

我不能访问home/about.html中的SITE_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',
)

谁能给我指出正确的方向吗?在


Tags: djangonamepyimportselfdatagetsettings
2条回答

不知道是什么给了你那种印象。request上下文处理器执行它在tin上所说的:将请求添加到上下文处理器。没有任何东西表明它会对站点名称设置起任何作用-尤其是因为这甚至不是一个标准设置。在

如果你想让一个上下文处理器来添加它,那么你可以自己编写——它只需要两行代码。在

django.core.context_processors.request只将请求添加到上下文中,请参见docs。在

编写win上下文处理器,类似于:

from django.conf import settings    

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

然后将该函数添加到设置.py在

另外,我建议一个好习惯是使用from django.conf import settings,而不是显式导入设置文件。在

相关问题 更多 >