我想在一个网址下使用两个不同的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
不起作用。什么是正确的电话?
答案 0 :(得分:1)
我很确定你需要返回
View1.as_view()
答案 1 :(得分:1)
我不建议你这样做,基于类的视图应该很简单并做一件事。
如果必须这样做,您可以覆盖不同用户的get_context_data
或get_template_names
模板视图。