I'm currently trying to call a class based Generic view from within another class based generic view and cant seem to do it correctly.
Ways I've tried:
result = CategoryTypes.as_view() # The same way you put it in the urlconf
print result
Prints: <function CategoryTypes at 0x92bd924>
CategoryTypes.as_view()(self.request)
# &
CategoryTypes().dispatch(self.request)
Tracebacks:
ContentNotRenderedError at /crm/categories/company/
The response content must be rendered before it can be accessed.
result = CategoryTypes().__init__()
print result
Prints: None
How do I call this from another view? I've seriously tried every method on the class and way of calling it I can think of.
The first way -- CategoryTypes.as_view()(self.request)
-- is right. The problem is that if your view returns a TemplateResponse
, its render
method isn't called automatically.
So if you need to access the content of the response, call render()
on it first.
Or you can directly access just content via result.rendered_content
. Before making this be sure you will set session into your request before passing into a view:
self.request.session = {}
CategoryTypes.as_view()(self.request)
来源:https://stackoverflow.com/questions/7258912/manually-calling-a-class-based-generic-view