首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Django模板中使用sync_to_async()?

如何在Django模板中使用sync_to_async()?
EN

Stack Overflow用户
提问于 2022-05-26 15:30:58
回答 1查看 851关注 0票数 5

我正在尝试使用uvicorn异步视图将Django教程代码轮询到异步。ORM查询通过将sync_to_async()包装成这样的方式处理异步视图。

代码语言:javascript
运行
复制
question = await sync_to_async(Question.objects.get, thread_sensitive=True)(pk=question_id)

但是我不知道如何在Django模板中应用sync_to_async或线程。

这段代码不能通过异步上下文调用--使用线程或sync_to_async。或者其他的方法来解决这个问题?

代码语言:javascript
运行
复制
{% for choice in question.choice_set.all %}

我使用Python 3.10、Django 4.0.4和uvicorn 0.17.6

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-06 15:35:22

我找到了几种解决办法:

这不安全。在您的settings.py中添加:

代码语言:javascript
运行
复制
import os
os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"

或者将您的问题对象放在单独的函数中:

代码语言:javascript
运行
复制
@sync_to_async
def get_question(question_id):
    return get_object_or_404(Question, pk=question_id)

question = await get_question(pk=question_id)

或者不分割(使用Django 4.1+):

代码语言:javascript
运行
复制
question = await Question.objects.aget(id=question_id)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72394322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档