Я бы порекомендовал решение 3; использование декоратора для проверки клиентского агента пользователя и возврат другого шаблона в случае мобильного агента.
Пусть декоратор примет два аргумента: обычный шаблон и мобильный шаблон.
С вашей точки зрения, вернуть dict Декоратор может перейти к функции рендеринга в качестве контекста. Существует декоратор с именем render_to, который делает это очень хорошо, Google для этого.
Чтобы справиться со случаем использования, когда пользователям нужна полная версия, даже при просмотре с мобильного устройства, вы можете использовать представление с перенаправлением, которое устанавливает cookie, который может проверить ваш декоратор.