3

所以我有一个 CBV (A)、CBV (B) 和一个类似

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

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

4

1 回答 1

6

你可以这样称呼它:

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)
于 2013-04-26T08:43:33.363 回答