23

現在、別のクラスベースのジェネリックビュー内からクラスベースのジェネリックビューを呼び出そうとしていますが、正しく実行できないようです。

私が試した方法:

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

別の観点からこれを呼び出すにはどうすればよいですか?私はクラスのすべてのメソッドとそれを呼び出す方法を真剣に試しました。

4

2 に答える 2

42

最初の方法---CategoryTypes.as_view()(self.request)は正しいです。問題は、ビューがを返す場合TemplateResponse、そのrenderメソッドが自動的に呼び出されないことです。

したがって、応答の内容にアクセスする必要がある場合は、render()最初にそれを呼び出します。

于 2011-08-31T16:35:14.400 に答える
1

または、を介してコンテンツのみに直接アクセスすることもできますresult.rendered_content。これを行う前に、ビューに渡す前に、必ずセッションをリクエストに設定してください。

self.request.session = {}
CategoryTypes.as_view()(self.request)
于 2017-09-25T09:51:10.480 に答える