Django基于类的视图:调用(转发)不同的基于类的视图

时间:2013-04-29 14:30:13

标签: python django

使用Django功能视图,调用不同的视图函数以将请求“转发”到不同的视图非常简单。 (django代码库有时会在其管理视图中执行此操作。)您只需调用该函数并返回结果。

例如:

def change_view(request, *args, **kwargs):
  if 'save_as_new' in request.GET:
    return add_view(request, *args, **kwargs)

它也很容易从功能视图转发到基于类的视图:

def change_view(request, *args, **kwargs):
  if 'save_as_new' in request.GET:
    return AddView.as_view()(request, *args, **kwargs)

然而,基于url(GET)param的存在或值,或者我从第一个基于类的视图有条件地调用或转发到第二个基于类的视图的方式感到困惑。或者,来自url conf的一个args或kwargs的值。请注意,我对这里的重定向一点都不感兴趣。

1 个答案:

答案 0 :(得分:6)

class CBViewA(View):
    def get(request, *args, **kwargs):
        if 'save_as_new' in request.GET:
            return AddView.as_view()(request, *args, **kwargs)

django run another class-based view (CBV) in a CBV?