python - 如何实时更新 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 语句的一部分。
任何建议表示赞赏:)
解决方案
您应该将前端和后端分开,以便动态更新 DOM 内容,而无需每次都渲染整个 DOM。
当用户执行需要刷新或获取更新数据的操作时,前端的职责是请求和获取最新值。请求需要通过例如 AJAX 异步进行。较新的 JS 框架,例如 React、Vue 使用虚拟 DOM,它们使用中间虚拟 DOM 来推送更新并最终一次性更新真实 DOM;这使它们非常高效。
(Django) 后端应该公开一个 API,该 API 将从后端获取特定资源的 (AJAX) 请求,并为它们提供服务。
一个不错的 Django 框架是 DRF(Django REST 框架),它公开了 REST 端点,您可以通过 AJAX 从前端调用这些端点并获得响应,以便前端可以进行必要的更新。
这是一个失败的高级视图,旨在为您提供一个可以通过深入挖掘来实现的想法。
推荐阅读
- python - scipy/optimize/slsqp.py c = concatenate((c_eq, c_ieq)) ValueError: 所有输入数组必须具有相同的维数
- php - FPDF:MULTICELL 生成报告
- perl - Perl 期望:对于 ssh 登录,如果一个错误的密码失败,如何尝试另一个密码?
- pandas - 用 scikitlearn 和 pandas 拟合 KDE 进行绘图。然而,分布在数据范围之外
- java - JSoup:难以提取单个元素
- typescript - Apollo 服务器中的打字稿语法
- mysql - 在 django 模型中存储时区假设?
- mongodb - mongodb:使用查找结果作为过滤的标准不适用于时间戳
- python - 如何在一条路线中调用多条路线?
- database - 创建新的BPMN proc时camunda数据库中存储了多少表数据