#django #listview #user-agent
#django #listview #user-agent
Вопрос:
Я создаю блог, и у меня есть разные шаблоны для мобильных и настольных версий, я успешно внедрил идентификатор user_agent для обращения к мобильному или настольному шаблону для всех моих функций следующим образом:
def about(request):
user_agent = get_user_agent(request)
if user_agent.is_mobile:
return render(request, 'about-mobile.html')
elif user_agent.is_pc:
return render(request, 'about.html')
Однако, как только мне нужно реализовать его в классах ListView, я действительно понятия не имею, как это сделать!
class homepage(ListView):
model = DeathAd
template_name = 'homepage.html'
ordering = ['-id']
paginate_by = 5
Ответ №1:
Вы можете переопределить .get_template_names()
метод [Django-doc]. Этот метод возвращает список шаблонов, которые затем проверяются в порядке списка:
class homepage(ListView):
model = DeathAd
template_name = 'homepage.html'
ordering = ['-id']
paginate_by = 5
def get_template_names(self, *args, **kwargs):
user_agent = get_user_agent(self.request)
if user_agent.is_mobile:
return ['about-mobile.html']
elif user_agent.is_pc:
return ['about.html']
return super().get_template_names(*args, **kwargs)
Комментарии:
1. Этот парень — легенда, через 51 минуту после публикации моей пожизненной проблемы он решил ее.