gpt4 book ai didi

django - 在Django中使用基于异步类的 View 的正确方法

转载 作者:行者123 更新时间:2023-12-03 09:39:00 26 4
gpt4 key购买 nike

我正在尝试使用非常新的Django 3.1异步 View 类。
根据可用的有限文档,我尝试创建自己的async def __call__()方法。
从文件:

For a class-based view, this means making its __call__() method an async def (not its __init__() or as_view()).



Django 3.1 Development Documents

但是,到目前为止,我还没有编写基于异步类的 View 的运气。我经常收到 await异常,或者 asyncio.iscoroutinefunction返回 False,如果类实际上是异步的,我认为应该返回true。

由于文档缺少示例,因此对异步编程有更多了解的人可以为我提供基于类的异步 View 示例的帮助吗?

最佳答案

花很多时间在Django票务系统,博客文章(对Joren致谢)等方面进行搜索,因此您不必这样做。
最好的办法就是使用the blog中的代码:

class YourView(View):    
@classonlymethod
def as_view(cls, **initkwargs):
view = super().as_view(**initkwargs)
view._is_coroutine = asyncio.coroutines._is_coroutine
return view

async def get(self, *args, **kwargs):
...
但您还需要知道,您无法使用实际的泛型(没有异步ORM支持,甚至TemplateView也无法使用)和3.1的内置 decorators。您需要为Django通常自己完成的事情编写自己的东西。

关于django - 在Django中使用基于异步类的 View 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62038200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com