Python 如何实时更新django模板?

Python 如何实时更新django模板?,python,django,django-templates,django-views,Python,Django,Django Templates,Django Views,在这个模板中,我从API检索比特币的价格。在实际情况下,价格只会在页面刷新时更新,而我希望在不动态刷新整个页面的情况下更新 我的看法是: def home(request): symbol = "BTCUSDT" tst = client.get_ticker(symbol=symbol) test = tst['lastPrice'] context={"test":test} return render(request,

在这个模板中,我从API检索比特币的价格。在实际情况下,价格只会在页面刷新时更新,而我希望在不动态刷新整个页面的情况下更新

我的看法是:

def home(request):

    symbol = "BTCUSDT"
    tst = client.get_ticker(symbol=symbol)

    test = tst['lastPrice']

    context={"test":test}

    return render(request,
                  "main/home.html", context
                  )
模板的行如下所示:

<h3> var: {{test}} </h3> 
var:{{test}
这里有两个问题:

1) 据我所知,Django本身不是异步的,因此我需要找到一种方法来实时更新模板的这一部分,而不必刷新整个页面

2) 在实际情况下,打开/刷新页面时会请求API,但要流式传输价格,它应该始终运行。我尝试了这个(糟糕的)解决方案:在视图中添加一个
while true
,但它当然破坏了我的代码,只执行while语句的一部分


任何建议都非常感谢:)

您应该分离前端和后端,以便动态更新DOM内容,而无需每次呈现整个DOM

前端的职责是在用户执行需要刷新或获取更新数据的操作时请求并获取最新的值。请求需要通过AJAX等异步方式发出。较新的JS框架(如React、Vue)使用虚拟DOM,使用中间虚拟DOM推动更新,最终一次性更新真实DOM;这使得他们非常出色

(Django)后端应该公开一个API,该API将从后端接收特定资源的(AJAX)请求,并为它们提供服务

Django的一个很好的框架是DRF(Django REST框架),它公开了REST端点,您可以通过AJAX从前端调用这些端点并获取响应,以便前端可以进行必要的更新


这是一个失败的高级视图,编写它是为了让您了解可以通过深入挖掘来实现的想法。

在这种情况下,您应该制作一些JavaScript来调用API并获取新的价格。例如,有角度的。Django是一个后端,而不是前端。或者您希望通过jQuery使用AJAX,并在后端完成工作,或者尝试单独通过JS更新值。这是相当广泛的,是的,但本质上,问题是我不知道把一直查询api的代码放在哪里。我的意思是,如果我把它放在视图中,它不会工作为什么它不会在视图中工作?现在很好用。关键是,你的Ajax会反复调用视图,并根据需要更新前端。还有一件事@heemayl:你说过,“当用户做某事时,它需要刷新”,但在这种情况下,用户不会做任何事情。我的意思是,页面只需实时更新,无需任何输入;只是查看页面。是一样的吗?我还应该和DRF一起去吗?@Jack022是的。我的意思是它将是基于事件的。该事件将是一个前端事件,例如用户单击某个东西、经过的某个时间、一些外部输入等等。然后前端将向后端发送AJAX请求以获取新数据,DRF将为请求的数据提供服务。正如您所看到的,DRF只服务于请求的内容,前端需要执行请求。好的,但我的意思是,在这种情况下,不应该有用户的输入。我要寻找的是,用户打开页面,他将看到页面的一部分,其中的数字实时更新。对不起,我对这东西不熟悉:)@Jack022是的。你可以做到。我建议您开始阅读AJAX的基础知识:)谢谢@heemayl。最后一件事。使用此解决方案或使用Django通道更新页面或类似SocketIO的东西之间有什么区别?