我想用以下方法在模板中加载站点名称:
{{ SITE_NAME }}
在setting.py
我有:
以及
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',
)
谁能给我指出正确的方向吗?在
不知道是什么给了你那种印象。
request
上下文处理器执行它在tin上所说的:将请求添加到上下文处理器。没有任何东西表明它会对站点名称设置起任何作用-尤其是因为这甚至不是一个标准设置。在如果你想让一个上下文处理器来添加它,那么你可以自己编写——它只需要两行代码。在
django.core.context_processors.request
只将请求添加到上下文中,请参见docs。在编写win上下文处理器,类似于:
然后将该函数添加到设置.py在
另外,我建议一个好习惯是使用
from django.conf import settings
,而不是显式导入设置文件。在相关问题 更多 >
编程相关推荐