手动调用Django中的类基础泛型视图

23 投票
2 回答
15196 浏览
提问于 2025-04-17 00:55

我现在正在尝试从一个基于类的通用视图中调用另一个基于类的通用视图,但似乎总是做错了。

我尝试过的方法:

result = CategoryTypes.as_view()  # The same way you put it in the urlconf
print result

打印结果:<function CategoryTypes at 0x92bd924>

CategoryTypes.as_view()(self.request)
# &
CategoryTypes().dispatch(self.request)

错误信息:

ContentNotRenderedError at /crm/categories/company/ 响应内容必须在访问之前被渲染。

result = CategoryTypes().__init__()
print result

打印结果:None

我该如何从另一个视图中调用这个?我真的尝试过所有我能想到的类和调用方式。

2 个回答

1

或者你可以直接通过 result.rendered_content 来获取内容。在这样做之前,确保你在传递到视图之前已经将会话设置到你的请求中:

self.request.session = {}
CategoryTypes.as_view()(self.request)
43

第一种方法 -- CategoryTypes.as_view()(self.request) -- 是正确的。问题在于,如果你的视图返回的是一个 TemplateResponse 对象,它的 render 方法不会自动被调用。

所以,如果你需要获取响应的内容,首先要对它调用 render() 方法。

撰写回答