一个URL上的多个基于类的视图

时间:2013-12-16 13:54:34

标签: django django-class-based-views

我想在一个网址下使用两个不同的CBV - 具体取决于用户的权限。视图是完全不同的,我不想将两个视图混合成一个。

对此有什么好处?我在考虑这样的事情:

class View1(TemplateView):
   ...

class View2(TemplateView):
   ...

def unified_view(request):
    if request.user.has_perm('...'):  # here I could decide which CBV to use
        return View1
    return View2

unified_view将在应用的urls.py中使用,并决定使用哪个CBV。显然return View1不起作用。什么是正确的电话?

2 个答案:

答案 0 :(得分:1)

我很确定你需要返回

View1.as_view() 

答案 1 :(得分:1)

我不建议你这样做,基于类的视图应该很简单并做一件事。

如果必须这样做,您可以覆盖不同用户的get_context_dataget_template_names模板视图。