因此,我正在使用Django设计一个网站,该网站会根据用户输入进行一些繁琐的工作。 这可能需要5到6秒钟的时间,而当我正在努力减少这种情况时,我希望在后端抓取时出现某种装载机。
我已经像平时在模板中使用CSS和JavaScript一样放置了一个加载器,但是仅在实际加载模板时才弹出,而在视图为模板数据收集时却不会弹出。
在Django中进行了尝试:
def scrape(request):
render(request,'loader.html')
*do scraping*
return render(request,'results.html',scraped_data)
答案 0 :(得分:1)
我用来解决此问题的方法是在scrape视图内触发一个异步函数。
@shared_task
def do_the_needful():
return "hello I am doing the needful"
def scrape_result(request, scrape_id):
result = AsyncResult(scrape_id).get()
# convert result to json or some other web format
return result_as_json
def scrape(request):
scrape_request_id = do_the_needful.submit()
return render(request, "scrape.html", context={"scrape_request_id": scrape_request_id}
然后,您需要在HTML中创建一些Javascript,以使用上下文中的 scrape_request_id 对 scrape_result 视图执行Ajax请求。