如何从Django中的另一个基于类的视图返回基于类的视图的结果?

时间:2014-08-08 20:19:26

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

当我提交某个CreateView时,我想继续在另一个CreateView中创建另一个对象。但是,当我尝试

def get_success_url(self):
    return FooView.as_view()(self.request, itempk = self.object.id)

我得到了

  

ContentNotRenderedError:必须先呈现响应内容   它可以被访问。

我也试过

def get_success_url(self):
    return render(FooView.as_view()(self.request, itempk = self.object.id))

给了我

  

AttributeError:'TemplateResponse'对象没有属性'META'

我很确定我只是以错误的方式解决这个问题,之前我已经做好了,但我很难过。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您不想调用视图,而是希望将用户重定向到该视图。所以只需使用redirect函数:

from django.shortcuts import redirect
...
return redirect('foo_view_name', kwargs={'itempk': self.object.id})

答案 1 :(得分:1)

既然你要定义get_success_url,我会说你只需要像

这样的东西
def get_success_url(self):
    # assuming that your FooView urlconf was named "foo_view"
    return reverse('foo_view', kwargs={'itempk':self.object.id})

比照。 https://docs.djangoproject.com/en/dev/ref/urlresolvers/