在 Django 中手动调用基于类的通用视图

发布于 2024-12-02 10:48:48 字数 642 浏览 0 评论 0原文

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

我尝试过的方法:

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

打印:

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

Tracebacks:

ContentNotRenderedError at /crm/categories/company/ 必须先呈现响应内容,然后才能访问它。 code>

result = CategoryTypes().__init__()
print result

打印: None

我如何从另一个视图调用它?我认真尝试了类中的每一个方法以及我能想到的调用方式。

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 in the class and way of calling it I can think of.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

何其悲哀 2024-12-09 10:48:48

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

因此,如果您需要访问响应的内容,请先调用 render()

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.

我不是你的备胎 2024-12-09 10:48:48

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

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

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文