django在CBV中运行另一个基于类的视图(CBV)?

时间:2013-04-26 08:36:55

标签: django django-views django-class-based-views

所以我有一个CBV(A),CBV(B)和一个像

这样的网址
regex=r'^(?P<slug>[-\w]+)/(?P<app>[-\w]+)'

我想用(A)读取slug和app参数,然后根据这些参数,将其重定向到适当的CBV,可能(B)。我不想用HttpResponseRedirect或类似的东西重定向用户,而是基本上运行另一个CBV,好像它是被调用的那个。如何从CBV(A)直接/内部运行另一个CBV,如(B)?

1 个答案:

答案 0 :(得分:5)

你可以这样称呼它:

class CBViewA(View):
    def dispatch(self, request, *args, **kwargs):
        if kwargs['slug'] = "some slug":
            return CBViewB.as_view()(request, *args, **kwargs)
        else:
            return super(CBViewA, self).dispatch(request, *args, **kwargs)