Как организовать код для приложения Flask с несколькими наборами шаблонов

Я пишу приложение с Flask, и я бы хотел создать другой код для настольных и мобильных браузеров. ИМХО должно быть хорошей идеей, чтобы код приложения был идентичным и помешал проблему обслуживания различного контента по стеку на уровне шаблона – поэтому он, по сути, становится вопросом написания двух наборов шаблонов для двух вариантов использования и поиска пути выбрать правильный вариант для каждого запроса. Я использую механизм шаблонов Jinja2 по умолчанию с Flask.

Я должен упомянуть, что у меня нет опыта работы с Flask, и я изучаю свой путь, пока я пишу код – я беру это как упражнение тоже 🙂

Какой механизм вы бы использовали для решения этой проблемы и сохранили бы исходный код как можно более чистым?

Ответ на меня 🙂

Я решил использовать это решение:

import flask # patch flask.render_template() _render_template = flask.render_template def _my_render_template(*args, **kwargs): if detect_mobile_browser(flask.request.user_agent.string): args = ('m/' + args[0],) + args[1:] return _render_template(*args, **kwargs) flask.render_template = _my_render_template 

пока это работает, и я просто поместил «мобильные шаблоны» в подкаталог m/ .

Я хотел бы указать вам, возможно, в несколько другом направлении.

Многие дизайнеры и разработчики (включая меня) не видят будущего дизайна веб-сайта при раздельном оформлении шаблонов, а в том, что один шаблон реагирует на его среду динамически. То есть он переупорядочивает свои элементы таким образом, который наилучшим образом подходит для данного дисплея.

Он называется отзывчивым дизайном . Я знаю, что это, вероятно, не решение, которое вы искали, но оно может стать лучшим.