Получение Site_ID в шаблоне Django - PullRequest
1 голос
/ 21 декабря 2010

Я создал веб-сайт для клиента, который имеет несколько приложений. Теперь у него есть новый зарегистрированный URL, который он хочет указать на тот же сайт, но он хочет, чтобы внешний вид изменился. Вот в основном он хочет новый home.html и base.html для нового веб-сайта. Я могу легко добавить новый сайт в настройки, а затем изменить вид домашней страницы, чтобы отобразить новый home2.html.

Однако как мне сделать что-то подобное, как указано в коде psuedo в base.html

{% if site_id equals 1 %}

{% include "base1.html" %}

{% endif %}

{% if site_id equals 2 %}

{% include "base2.html" %}
{% endif %}

Любые идеи. На сайте сотни просмотров и около 50 моделей. Я не могу воссоздать модели и бездельничать. Это должно быть быстрое решение.

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 21 декабря 2010

Чтобы расширить идею WoLph с процессором контекста, я бы, возможно, даже добавил переключение шаблона на процессор контекста, который очистил бы ваши шаблоны, так как в противном случае вам, возможно, придется повторять предложение if довольно часто:

from django.contrib.sites.models import Site

def base_template(request):
    site = Site.objects.get_current()
    template = "base%s.html" % str(site.pk)
    return {'BASE_TEMPLATE': template}

А в вашем шаблоне: {% include BASE_TEMPLATE %}

Выглядит мне приятнее, чем переключение в шаблонах!

1 голос
/ 21 декабря 2010

Вы можете создать контекстный процессор для автоматического добавления site_id в контекст: http://docs.djangoproject.com/en/dev/ref/templates/api/#writing-your-own-context-processors

Но я бы выбрал другое решение.Вы можете просто добавить дополнительный каталог шаблонов для каждого сайта, чтобы Django сначала попробовал шаблоны специально для этого сайта и вернулся к обычным шаблонам, если они недоступны.

0 голосов
/ 16 сентября 2012

Другим решением было бы написание промежуточного программного обеспечения для установки «request.site» текущего идентификатора сайта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...