手动调用基于类的通用视图

时间:2011-08-31 14:55:57

标签: python django django-generic-views

我目前正在尝试从另一个基于类的通用视图中调用基于类的通用视图,并且似乎无法正确执行。

我尝试过的方式:

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/ The response content must be rendered before it can be accessed.

result = CategoryTypes().__init__()
print result

打印:None

如何从其他视图中调用此方法?我认真地尝试了课堂上的每一种方法以及我能想到的调用它的方法。

2 个答案:

答案 0 :(得分:35)

第一种方式 - CategoryTypes.as_view()(self.request) - 是对的。问题是如果您的视图返回TemplateResponse,则不会自动调用其render方法。

因此,如果您需要访问回复的内容,请先在其上调用render()

答案 1 :(得分:0)

或者您可以通过result.rendered_content直接访问内容。在进行此操作之前,请确保在进入视图之前将会话设置为您的请求:

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