Как менять TEMPLATE_DIRS?

Добрый день!

Хочу постепенно перевести сайт на новый дизайн!

Нужно чтобы TEMPLATE_DIRS менялся на другой путь, если в запросе есть site.ru/?new_style=1

Подскажите как это сделать?
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
Для подобного можно добавить middleware.py подобного содержания
# -*- coding: UTF-8 -*-
from django.conf import settings


class NewStyleTemplateDir(object):

    @staticmethod
    def process_request(request):
        if request.GET.get('new_style'):
            settings.TEMPLATES[0]['DIRS'] = ['новая директория с шаблонами']


И добавить этот middleware в settings.py в MIDDLEWARE_CLASSES
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@newpy
web-dev
может примерно так?
import settings
if 'new_style' in request.GET:
    style = request.GET.get('new_style')
    делаем что-то с settings.TEMPLATE_DIRS ( = style directory)
Ответ написан
winordie
@winordie
Лучшая документация -- исходники
При использовании cbv-наследников TemplateResponseMixin за это отвечает метод get_template_names.
Можно задать в TEMPLATES['DIRS'] обе папки: старую и новую, дать новым шаблонам немного другие именна (с _ в начале например) и поместить их в новой папке. И тогда написать:
class MyView(TemlateView):
  def get_template_names(self):
    style = self.request.GET.get('new_style', 0)
    if style == 1:
      return list(map(lambda t: '_{}'.format(t), super().get_template_names())
    return super().get_template_names()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы