首页 > 解决方案 > 如何实时更新 django 模板?

问题描述

在这个模板中,我从 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> 

这里有两个问题:

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

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

任何建议表示赞赏:)

标签: pythondjangodjango-templatesdjango-views

解决方案


您应该将前端和后端分开,以便动态更新 DOM 内容,而无需每次都渲染整个 DOM。

当用户执行需要刷新或获取更新数据的操作时,前端的职责是请求和获取最新值。请求需要通过例如 AJAX 异步进行。较新的 JS 框架,例如 React、Vue 使用虚拟 DOM,它们使用中间虚拟 DOM 来推送更新并最终一次性更新真实 DOM;这使它们非常高效。

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

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

这是一个失败的高级视图,旨在为您提供一个可以通过深入挖掘来实现的想法。


推荐阅读