Как обслуживать статические и шаблоны индивидуально для каждого сайта в Wagtail CMS multisite - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь создать мультисайт Wagtail проект, используя прилагаемый фреймворк Django Sites. Я не смог найти в документации Wagtail, как обслуживать шаблоны и статику для каждого сайта в отдельности. Может ли кто-нибудь помочь мне с советом или ссылкой на какой-то учебник? Спасибо.

1 Ответ

0 голосов
/ 19 мая 2019

В трясогузке логика представления живет на модели страницы.Когда запрос будет сделан, Wagtail url resolver вызовет метод page serve.Форма кода Wagtail wagtail.core.models.Page выглядит следующим образом:

def get_template(self, request, *args, **kwargs):
    if request.is_ajax():
        return self.ajax_template or self.template
    else:
        return self.template

def serve(self, request, *args, **kwargs):
    request.is_preview = getattr(request, 'is_preview', False)

    return TemplateResponse(
        request,
        self.get_template(request, *args, **kwargs),
        self.get_context(request, *args, **kwargs)
    )

Чтобы ответить на ваш вопрос: вам нужно переопределить get_template и добавить логику, чтобы сделать имя шаблона уникальным для каждого сайта.Это непроверенный код, но вы поняли:

class SomePage(Page):
    ...
    def get_template(self, request, *args, **kwargs):
        return request.site + super().get_template(request, *args, **kwargs)

Теперь имя шаблона имеет префикс с сайтом.Так что вам нужно только предоставить шаблоны с правильными именами.

...