簡體   English   中英

當我使用Django在后端處理某些內容時,如何創建加載頁面?

[英]How do I make a loading page while I am processing something in the backend with Django?

我的應用程序有一個主視圖功能。 成功登錄后,將調用此主視圖方法,並期望呈現模板。

但是我必須在這個視圖方法中執行一些計算[我通過制作facebook圖形api請求來檢查用戶的某些條件。]

因此加載需要2~4秒。

如何顯示此加載場景,因為模板由return語句呈現,因此僅在過程完成時執行。

我應該制作2個視圖,一個用於顯示加載,另一個用於計算並繼續向其他視圖方法發出AJAX請求以檢查過程是否完成?

您確實應該創建兩個視圖,一個僅返回顯示加載UI的頁面,另一個用於執行長任務。

將使用從“加載”頁面發出的AJAX請求調用第二個視圖。 來自AJAX請求的響應將通知您的“加載”頁面是時候繼續前進了。

您需要確保AJAX請求的持續時間不會超過服務器的超時(大約10秒,你應該沒問題)。

您需要在異步執行的任務中運行Graph API請求,允許您返回HttpResponse而無需等待任務完成。

芹菜將允許你做到這一點。

然后,您需要一種方法來通知您的客戶端異步任務已完成。 我看到兩種方法:

  1. 定期向一個視圖發出AJAX請求,以檢查任務是否完成。
  2. 使用WebSockets

第一種方法是最簡單的方法,但缺點是會產生大量無用的請求並且反應性較低。

另一方面使用WebSockets需要更多配置,因為需要外部應用程序(例如: django-socketioswampdragon )。 如果它是您需要從服務器到客戶端的通知的唯一地方,那么使用WebSockets似乎有點矯枉過正。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM