Django 在处理GET请求时显示临时页面
我有一个视图,处理GET请求和呈现结果可能需要几秒钟的时间。我想在视图执行其操作时,放置一个临时页面,上面写着“处理…”。我该怎么做 更新 我无法控制指向我页面的链接。这是一个链接到我的第三方在他们的网页上。当他们点击它时,我运行一些东西并显示结果。我不想让他们在我显示的页面上点击任何东西 理想情况下,我希望:Django 在处理GET请求时显示临时页面,django,Django,我有一个视图,处理GET请求和呈现结果可能需要几秒钟的时间。我想在视图执行其操作时,放置一个临时页面,上面写着“处理…”。我该怎么做 更新 我无法控制指向我页面的链接。这是一个链接到我的第三方在他们的网页上。当他们点击它时,我运行一些东西并显示结果。我不想让他们在我显示的页面上点击任何东西 理想情况下,我希望: 用户单击第三方网站上指向我的网站的链接 我的网站会显示一条“处理请求”消息-用户无需单击任何内容,只需等待 几秒钟后显示结果 用户只需单击一次链接,然后等待结果 如果我不熟悉jQuery
<script>
showProcessingMessage = function() {
$("body").append('<div id="style_me_as_message">processing request</div>');
}
$("body").on('click', "a.slow", showProcessingMessage);
</script>
<a class="slow" href="/slow-response-page/">show slow page</a>
showProcessingMessage=函数(){
$(“正文”).append(“处理请求”);
}
$(“body”)。在('单击',“a.slow”,显示处理消息);
在等待视图返回结果时,使用jQuery显示消息
在包含处理消息/图像的页面中放置隐藏的div标记
如果通过单击按钮提交GET请求,则在按钮上放置onclick事件以显示div标记。完成视图处理后,将重新加载页面并显示目标页面
如果使用AJAX调用视图,则可以在ajaxStart和ajaxComplete事件中显示/隐藏div
编辑:好的,因为页面将由第三方调用,这将使事情变得复杂一点。我建议您加载没有数据的页面,一旦加载页面,您就可以执行ajaxget请求来检索数据
你可以这样做:
向包含进度消息/图像的页面添加隐藏的div标记
<div id="progress">Please wait while the page is loading.</div>
上面的代码还没有经过测试,但它会给你一个想法
更新
我建议您从视图中返回JSON对象或类似对象:
companies = Company.objects.filter(name__istartswith=companyname)
results = [{'value': company.name, 'id':company.id} for company in companies ]
json = simplejson.dumps(results)
return HttpResponse(json, mimetype='application/json')
您也可以在jQuery中使用getJSON()方法而不是get()。谢谢,但我无法控制指向我页面的链接。这是他们在页面上的链接。我不想让他们在我显示的页面上点击任何东西。谢谢。如果这能满足我上面的要求(请参见步骤1、2、3),你能给出一些示例代码吗?谢谢。要实现AJAX get,是否必须更改现有的Django视图以使其启用AJAX?我假设数据将包含我的视图返回的所有HTML页面?我可以显示这个吗?因为AJAX调用是通过GET完成的,所以不需要在视图中启用任何东西。我建议您从视图中返回JSON对象或类似对象:companys=Company.objects.filter(name_uuistartswith=companyname)results=[{'value':Company.name,'id':Company.id}for companys in companys]JSON=simplejson.dumps(results)返回HttpResponse(JSON,mimetype='application/JSON'))
companies = Company.objects.filter(name__istartswith=companyname)
results = [{'value': company.name, 'id':company.id} for company in companies ]
json = simplejson.dumps(results)
return HttpResponse(json, mimetype='application/json')