在django视图中渲染模板?

时间:2020-05-22 18:06:56

标签: python django

因此,我正在使用Django设计一个网站,该网站会根据用户输入进行一些繁琐的工作。 这可能需要5到6秒钟的时间,而当我正在努力减少这种情况时,我希望在后端抓取时出现某种装载机。

我已经像平时在模板中使用CSS和JavaScript一样放置了一个加载器,但是仅在实际加载模板时才弹出,而在视图为模板数据收集时却不会弹出。

在Django中进行了尝试:

def scrape(request):
    render(request,'loader.html')

    *do scraping*
    return render(request,'results.html',scraped_data)

1 个答案:

答案 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请求。