Создание нескольких шаблонов сайта с помощью django cms или любого другого инструмента

Можно ли использовать Django для создания сайта для создания пользовательских сайтов в зависимости от потребностей пользователей? Будет более одного шаблона, и у каждого пользователя будет собственный url для его сайтов.

Я не знаю, можно ли этого достичь с помощью Django CMS.

Конечно, это возможно, но это требует тонны работы, потому что вам нужно написать кучу шаблонов, или/и логику, которая обрабатывает шаблоны.

Вы можете написать TemplateMixin, который в зависимости от переданного домена или kwarg в url меняет шаблон в View. Так, например, это может выглядеть следующим образом:

class TemplateMixin:
    template_name = None
    request = None
    model = None

    def get_template_names(self):
        """
        Return a list of template names to be used for the request.

         Must return a list. May not be called if render_to_response() is overridden.
        """
        db_settings = Settings.objects.get_or_create()[0]
        if self.template_name is None:
            raise ImproperlyConfigured(
                'TemplateResponseMixin requires either a definition of '
                '\"template_name\" or an implementation of \"get_template_names()\"')
        template = db_settings.website_template
        ready_template = '/'.join([template, self.template_name])
        return [ready_template]

Существуют также решения для работы с несколькими доменами, так что вы можете определить текущий домен через self.request в методе get_template_names. Шаблоны обрабатываются префиксом. kwargs также должны быть в self.kwargs, так что вы можете определить, какой сайт вам нужно представить через пользовательское пространство имен url.

Вы также можете создать модель WebsiteSettings, которая работает с различными шаблонами, управляется с помощью простой пользовательской панели, и принадлежит пользователю или группе пользователей. Поля, которые она должна иметь, это 'template' с атрибутом choices, отношение к User (или CustomUser модели), и куча настроек, которые вы хотите дать пользователю (или вы можете иметь различные модели для этого).

Решение, которое я привожу здесь, простое, чтобы показать идею - но его может быть недостаточно, чтобы достичь того, что вы действительно хотите, вы должны написать всю логику миксинов, представлений и т.д. самостоятельно.

Вернуться на верх