Eva*_*vey 7 django loading django-views
如何从django视图中显示请等待加载消息?
我有一个Django视图,需要花费大量时间在大型数据集上执行计算.
当过程加载时,我想向用户呈现反馈消息,例如:旋转加载GIF或类似动画.
在尝试了 Brandon 和 Murat 建议的两种不同方法之后,Brandon 的建议被证明是最成功的。
创建一个包含来自http://djangosnippets.org/snippets/679/的 javascript 的包装模板。javascript 已被修改:(i) 在没有表单的情况下工作 (ii) 在返回“完成”标志时隐藏进度条/显示结果 (iii) JSON 更新 url 指向下面描述的视图
将慢速加载功能移至线程。该线程将被传递一个缓存键,并将负责更新缓存的进度状态及其结果。该线程将原始模板呈现为字符串并将其保存到缓存中。
创建一个基于从http://djangosnippets.org/snippets/678/修改为(i)的upload_progress的视图,如果progress_id=''(ii)生成cache_key,检查缓存是否已经存在,如果不启动新线程 (iii) 监控线程的进度,完成后,将结果传递给包装模板
包装模板通过以下方式显示结果 document.getElementById('main').innerHTML=data.result
(* 考虑是否可以通过重定向更好地实现第 4 步,因为呈现的模板包含当前未由 运行的 javascript document.getElementById('main').innerHTML=data.result)
小智 5
您可以做的另一件事是添加一个 javascript 函数,该函数在实际调用 Django 视图之前显示加载图像。
function showLoaderOnClick(url) {
showLoader();
window.location=url;
}
function showLoader(){
$('body').append('<div style="" id="loadingDiv"><div class="loader">Loading...</div></div>');
}
Run Code Online (Sandbox Code Playgroud)
然后在您的模板中您可以执行以下操作:
<a href='#' onclick="showLoaderOnClick('{% url 'my_namespace:my_view' %}')">This will take some time...</a>
Run Code Online (Sandbox Code Playgroud)
这是一个快速默认的 loadingDiv : https: //stackoverflow.com/a/41730965/13476073 请注意,这需要 jQuery。
| 归档时间: |
|
| 查看次数: |
16086 次 |
| 最近记录: |