Доступен ли текущий сайт из шаблона? - PullRequest
13 голосов
/ 19 сентября 2011

Я пытаюсь просто получить текущий Site из шаблона для разбора следующим образом:

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

К сожалению, это ничего не поднимает.

Есть ли способ получить доступ к текущему сайту из шаблона?

Ответы [ 2 ]

26 голосов
/ 19 сентября 2011

Название вашего вопроса предполагает, что «представление» и «шаблон» взаимозаменяемы - это не так. Чтобы получить текущий сайт в шаблоне, его необходимо добавить в контекст, который используется для визуализации шаблона. Если вы используете 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>
0 голосов
/ 22 марта 2015

Как ни странно, использование процессора Bradleyayers дало результаты Null, поэтому вместо использования платформы Site я использовал параметр внутри запроса.

Таким образом, процессор будет выглядеть так:

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

Надеюсь, это помогло

...