是否可以从模板访问当前站点?

时间:2011-09-19 05:09:35

标签: django django-templates django-views django-sites

我正在尝试从模板中简单地获取当前Site以进行解析:

<h3>{{ site.name }}</h3>

不幸的是,这并没有带来什么。

有没有办法从模板访问当前网站?

2 个答案:

答案 0 :(得分:25)

你的问题的标题假定“视图”和“模板”是可以互换的 - 它们不是。为了在模板中获取当前站点,需要将其添加到用于呈现模板的上下文中。如果您使用的是RequestContext,则可以编写一个上下文处理器来自动执行此操作。

您可以编写上下文处理器来执行此操作:

from django.contrib.sites.models import Site

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

然后,将其添加到您的TEMPLATE_CONTEXT_PROCESSORS,并按照以下方式使用它:

<h3>{{ site.name }}</h3>

答案 1 :(得分:0)

奇怪的是,使用bradleyayers处理器给出了Null结果,所以我没有使用Site框架,而是在请求中使用了参数。

所以处理器看起来像这样:

def host_processor(request):
    return { 'host': request.get_host() }

希望有所帮助