This question already has an answer here:
django run another class-based view (CBV) in a CBV?
(1个答案)
5年前关闭。
对于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 CONG的ARG或KARWG中的一个的值,有条件地或最好地从第1类视图中有条件地调用或转发第二类的视图。

最佳答案

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?

关于python - Django基于类的 View :调用(转发至)不同的基于类的 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16281249/

10-16 07:09