【问题标题】:How to use django-user-agents with class ListViews如何将 django-user-agents 与 ListViews 类一起使用
【发布时间】:2020-11-24 19:52:50
【问题描述】:

我正在建立一个博客,并且我有不同的移动版和桌面版模板,我已经成功实现了 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

【问题讨论】:

    标签: django listview user-agent


    【解决方案1】:

    您可以覆盖.get_template_names() method [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)

    【讨论】:

    • 这个人是个传奇人物,在我的终身问题发布 51 分钟后,他解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2020-12-30
    • 2011-09-19
    • 2019-09-04
    • 2019-11-13
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多