在此模板中,我正在从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语句。
任何建议都值得赞赏:)
答案 0 :(得分:1)
您应该将前端和后端分开,以便动态更新DOM内容,而不必每次都渲染整个DOM。
前端的职责是当用户执行保证刷新或获取更新数据的操作时请求并获取最新值。该请求需要通过例如AJAX。较新的JS框架,例如React,Vue使用虚拟DOM,该虚拟DOM使用中间虚拟DOM来推动更新并最终一次更新真实DOM。这使他们表现出色。
(Django)后端应公开一个API,该API将从后端获取特定资源的(AJAX)请求,并为它们提供服务。
DRF(Django REST框架)是Django的一个很好的框架,它公开了REST端点,您可以通过AJAX从前端调用该端点并获得响应,以便前端可以进行必要的更新。
这是一个失败的高级视图,旨在为您提供一个想法,可以通过更深入地了解实现。