Django{{site}}模板上下文不工作?

Django{{site}}模板上下文不工作?,django,django-templates,django-context,Django,Django Templates,Django Context,这应该是一个超级简单的。我非常确定,我过去在模板中成功地使用了这个上下文来进行链接。我相信这是以某种方式构建到RequestContext实例中的 我的设置文件中的站点ID记录正确。我已经为我的所有视图包括了一个RequestContext实例,还包括了contrib.auth应用程序,这可能与本例有关 {{site}}上下文是以某种方式内置的还是我应该为实例查询Sites对象 谢谢大家, BrendanDjango力求明确,因此它不太可能自行设置任何上下文。必须有上下文处理器,在设置中设置{{

这应该是一个超级简单的。我非常确定,我过去在模板中成功地使用了这个上下文来进行链接。我相信这是以某种方式构建到RequestContext实例中的

我的设置文件中的站点ID记录正确。我已经为我的所有视图包括了一个RequestContext实例,还包括了contrib.auth应用程序,这可能与本例有关

{{site}}上下文是以某种方式内置的还是我应该为实例查询Sites对象

谢谢大家,
Brendan

Django力求明确,因此它不太可能自行设置任何上下文。必须有上下文处理器,在
设置中设置
{{site}
。上下文处理器
。我已经检查了
django.core.context\u处理器
django.contrib.sites
,没有这样的处理器设置
站点
。因此,您可能有一个第三方上下文处理器来实现这一点

编写上下文处理器非常容易:

myproject/context_processors.py:

    from django.contrib.sites.models import Site

    def site(request):
        return {
            'site': Site.objects.get_current()
        }

myproject/settings.py:

    CONTEXT_PROCESSORS += ['myproject.context_processors.site']

创建自定义上下文处理器不会有什么坏处

def site(request):
    return {'site': Site.objects.get_current()}
请注意,get_current()使用SITE_ID,这是项目中的全局设置(在settings.py中定义)。如果要支持多站点,则需要SITE_ID变量根据当前访问的站点更改其值


这是一个很好的片段,可以让它发挥作用。

谢谢Skimantas,这肯定回答了我的问题。我并没有使用任何第三方上下文处理器,所以以前使用该站点的能力仍然是个谜。我要调查一下。不过,对我的整个问题的回答很好。