2

使用 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) 参数的存在或值从第一个基于类的视图有条件地调用或转发到第二个基于类的视图的正确或最佳方式感到困惑,或者,关于 url conf 中的 args 或 kwargs 之一的值。请注意,我对在这里进行重定向完全不感兴趣。

4

1 回答 1

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

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

于 2013-04-29T14:46:51.797 回答