Django:在所有模板中定义模板上下文处理器,而不创建新视图

Django:在所有模板中定义模板上下文处理器,而不创建新视图,django,django-templates,Django,Django Templates,我需要在所有模板中获得一个环境变量(例如:Mixpanel_Token),并且无需在Django中创建新视图 从我读到的内容来看,我应该使用一个模板上下文处理器 上下文处理器在context_processors.py文件中定义: from django.conf import settings def settings_mixpanel(request): ctx = { "MIXPANEL_TOKEN": settings.MIXPANEL_TOKEN, }

我需要在所有模板中获得一个环境变量(例如:Mixpanel_Token),并且无需在Django中创建新视图

从我读到的内容来看,我应该使用一个模板上下文处理器

上下文处理器在context_processors.py文件中定义:

from django.conf import settings
def settings_mixpanel(request):
    ctx = {
        "MIXPANEL_TOKEN": settings.MIXPANEL_TOKEN,
    }
    return ctx
TEMPLATE_CONTEXT_PROCESSORS = (
'utils.context_processors.settings_mixpanel',
)
在my settings.py文件中:

from django.conf import settings
def settings_mixpanel(request):
    ctx = {
        "MIXPANEL_TOKEN": settings.MIXPANEL_TOKEN,
    }
    return ctx
TEMPLATE_CONTEXT_PROCESSORS = (
'utils.context_processors.settings_mixpanel',
)
我遇到的问题是,鉴于我的所有视图都已在Django中创建,如何将
MIXPANEL\u TOKEN
定义为我所有模板中的上下文变量

不想使用
render\u to\u response
函数重新创建如下视图:

    def index(request):
    return render_to_response("index.html", {},context_instance=RequestContext(request))

你不需要做任何特别的事情。只要使用
RequestContext
呈现模板,就可以使用
{MIXPANEL\u TOKEN}
访问变量,这非常简单明了:上下文处理器由RequestContext(…)调用。如果不使用RequestContext(…),则不会使用上下文处理器,因此上下文处理器没有任何价值。您不一定需要使用render_to_响应,但必须使用RequestContext。不管你喜不喜欢,Django就是这样工作的。但从我个人的观点来看,更改现有视图以使用RequestContext并不是一件大事,是吗?

因为Django 1.8为模板注册自定义上下文处理器是通过:
templates->OPTIONS->context\u processors
请参阅此处以获取参考:

您想用“我不想”来重新创建视图是什么意思?您的模板可能会在视图的上下文中呈现。模板由视图处理。这和重力一样不可避免。现在,在使用某些视图渲染的每个模板上,MIXPANEL_标记都会出现,而无需每次都显式地传递它。上下文处理器就是这样做的。我不想将RequestContext添加到我创建的所有视图中。。。。什么?虚拟环境与任何事情有什么关系?你的问题和你提供给我们的信息通常没有任何意义。如果没有,那么就无法避免对所有视图进行一行扫描。下次在Django的模板语言上使用RTFD。