如何将 django-user-agents 与 class ListViews 一起使用
How to use django-user-agents with class ListViews
我正在构建一个博客,我有不同的移动版和桌面版模板,我已经成功地实现了 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
您可以覆盖 .get_template_names()
method [Django-doc]。此方法 returns 模板列表,然后按列表的顺序尝试:
class homepage(ListView):
model = DeathAd
template_name = 'homepage.html'
ordering = ['-id']
paginate_by = 5
def <b>get_template_names</b>(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)
我正在构建一个博客,我有不同的移动版和桌面版模板,我已经成功地实现了 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
您可以覆盖 .get_template_names()
method [Django-doc]。此方法 returns 模板列表,然后按列表的顺序尝试:
class homepage(ListView):
model = DeathAd
template_name = 'homepage.html'
ordering = ['-id']
paginate_by = 5
def <b>get_template_names</b>(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)