Загрузить шаблон на основе домена - PullRequest
2 голосов
/ 30 сентября 2019

Есть два сайта с разными доменами (first_example.com, second_example.com). У них общая база данных и общая логика. Задача состоит в том, что нужно сделать, чтобы для каждого из сайтов был загружен собственный шаблон.

Например, будет структура файла

__landing
____templates
______landing
________site_1
__________ index.html
________site_2
__________ index.html

Необходимо, чтобы припри открытии first domain загружаются шаблоны из site_1. А при открытии second domain загружались шаблоны из site_2.

Думаю, мне нужно как-то написать template_loader, но я пока не понимаю, как это сделать.

1 Ответ

1 голос
/ 30 сентября 2019

Вместо того, чтобы вкладывать шаблоны «на сайт» в структуру каталогов шаблонов, используйте два отличающихся корневых каталога шаблонов, т. Е. Вместо

/templates
   /app-one
      site1/
        index.html
      site2/
        index.html

вы хотите:

/site1-templates
   /app-one
      index.html
/site2-templates
   /app-one
      index.html

Затем в каждом файле настроек (у вас есть отдельные настройки для каждого сайта?), Просто укажите правильный путь для TEMPLATES.DIRS

# site1 settings

TEMPLATES = [{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [
        os.path.join(PROJECT_ROOT, 'site1-templates'),
    ],
    'OPTIONS': {
    # etc
    }
 }]

Примечание: если вам нужно сохранить некоторые общие шаблоны, вы можетепоместите их в третий каталог (т. е. basetemplates) и добавьте после пути к сайту в TEMPLATES.DIRS.

TEMPLATES = [{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [
        os.path.join(PROJECT_ROOT, 'site1-templates'),
        os.path.join(PROJECT_ROOT, 'base-templates'),
    ],
    'OPTIONS': {
    # etc
    }
 }]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...