【D01】Django中實現帶進度條的倒計時功能(簡易版)

来源:https://www.cnblogs.com/DingyLand/archive/2023/04/12/pomnote_01_.html
-Advertisement-
Play Games

首先說明簡易版是只有一個 倒計時 和一個 進度條,頁面載入後自動開始計時,下次計時需要手動刷新頁面。 後續會更新實現完整的倒計時功能的文章 前期準備 前端框架 你需要準備一些前端框架:Bootstrap4 和 jQuery 安裝方法請自行查閱官方文檔或教程 Bootstrap4:https://v4 ...


首先說明簡易版是只有一個 倒計時 和一個 進度條,頁面載入後自動開始計時,下次計時需要手動刷新頁面。

後續會更新實現完整的倒計時功能的文章

前期準備

  1. 前端框架

    你需要準備一些前端框架:Bootstrap4jQuery
    安裝方法請自行查閱官方文檔或教程

  2. 保證你的Django項目已經配置完畢,包括路由

倒計時部分

先上效果圖

(emm...不好意思有點醜...至於這個進度條為什麼會跳,是因為我當時忘記把另一個方法註釋掉,導致兩個計時方法同時進行,後面的代碼不會出現這個錯誤)

以下代碼由ChatGPT生成

ChatGPT第一次給的代碼是在視圖函數里處理時間,每秒返回一次請求給瀏覽器變更數字。這導致了瀏覽器反應不過來,無法每秒都接受請求並響應,因此實現倒計時動態更新需要在JavaScript實現

views.py:

import time
from django.shortcuts import render

def countdown(request):
    start_time = int(time.time())
    end_time = start_time + 1500  # 25 minutes in seconds
    while int(time.time()) < end_time:
        time_left = end_time - int(time.time())
        minutes = time_left // 60
        seconds = time_left % 60
        context = {'minutes': minutes, 'seconds': seconds}
        time.sleep(1)
    context = {'minutes': 0, 'seconds': 0}
    return render(request, 'countdown.html', context)

糾正後給的代碼:

完整代碼

views.py:

from django.shortcuts import render
import datetime

def countdown(request):
    now = datetime.datetime.now()
    # 設置倒計時結束時間(25分鐘)
    end_time = now + datetime.timedelta(minutes=25)
    context = {'end_time': end_time}
    return render(request, 'countdown.html', context)

countdown.html:

JavaScript使用jQuery

<!DOCTYPE html>
<html>
  <head>
    <title>Pomodoro Timer</title>
    <meta charset="utf-8">
    <script type="text/javascript">
      function updateTimer() {
  		var now = new Date();
      	var endTime = new Date('{{ end_time|date:"c" }}');
      	var diff = endTime - now;
      	var minutes = Math.floor(diff / 60000);
      	var seconds = Math.floor((diff % 60000) / 1000);

      	$('#minutes').text(('0' + minutes).slice(-2));
      	$('#seconds').text(('0' + seconds).slice(-2));

      	if (diff > 0) {
        	setTimeout(updateTimer, 1000);
  		}
      }

	$(document).ready(function() {
  		updateTimer();
	});

    </script>
  </head>
  <body>
    <h1>Pomodoro Timer</h1>
    <p>Time remaining: <span id="minutes">25</span>:<span id="seconds">00</span></p>
  </body>
</html>

配置好就可以看到數字時鐘在計時了。

嵌入式倒計時器

另外,ChatGPT提供了嵌入式倒計時器組件方法

在任何模板中都可以使用以下代碼來載入你寫的倒計時器:

HTML:

{% url 'countdown' as countdown_url %}
<iframe src="{{ countdown_url }}" width="400" height="200"></iframe>

這將在模板中嵌入一個iframe元素,並使用countdown視圖函數的URL作為其源。當用戶載入頁面時,iframe將顯示倒計時器,並開始倒計時。

進度條部分

HTML:

ChatGPT在html中重寫了CSS以及添加了JS部分代碼,效果十分抽象

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數據開發基本都是從陌生到熟悉,但是寫多了就會發現各種好用的工具/函數,也會發現各種坑,本文分享了作者從拿到數據到數據開發到數據監控的一些實操經驗。 ...
  • 摘要:對於資料庫來說,性能一直被視為最關鍵的部分。GaussDB作為華為自主創新研發的分散式關係型資料庫,那麼華為雲資料庫GaussDB在提升資料庫性能方面都有哪些黑科技呢? 本文分享自華為雲社區《【雲圖說】第275期 雲資料庫GaussDB如何做到卓越性能》,作者:閱識風雲。 對於資料庫來說,性能 ...
  • ☞ 商品介面的定義 價格、庫存量、發貨地點等。此外,它還可以提供商品的詳細信息,包括商品的圖片、詳細描述、規格參數、售後服務等。這些信息可以幫助用戶更好地瞭解商品,從而更好地選擇商品。 其次,電商平臺商品詳情介面的實現原理是基於RESTful API。RESTful API是一種基於HTTP協議的A ...
  • 回顧大數據的發展歷程,一句話概括就是海量數據的高效處理。在當今快節奏、不斷變化的市場環境下,優秀的開發效率已經成為企業數字化轉型的必備條件。 數棧離線開發BatchWorks 是一款專註離線數據ELT開發的產品,採用先進的大數據生態底層技術,具備高性能且功能豐富的大數據處理能力,對大數據離線計算、數 ...
  • 4月7-8日,年度資料庫行業盛會——2023數據技術嘉年華(DTC 2023)如期而至。 此次盛會匯聚了全國各地數千名數據領域學術精英、領袖人物、技術專家、從業者和技術愛好者,共同見證行業蓬勃發展、生態融合共贏、技術迭代升級及市場風雲變遷。 GreatSQL作為萬里資料庫主導成立的開源資料庫社區,首 ...
  • 在Oracle資料庫中,如果我們使用用戶管理備份與恢復(User-Managed Backup and Recovery)方式去備份還原資料庫的話,如何獲取用戶管理備份與恢復的記錄信息呢?例如,我要查看某個資料庫實例做用戶管理備份的記錄。一般使用下麵腳本。似乎用戶管理備份比較“簡單”,目前我查了相關 ...
  • Redis 構造了多種底層數據結構供使用,不同的數據類型有可能使用到多種底層數據結構存儲,因此,需要理解為何 Redis 會有這樣的設計,理解每個底層數據結構的概念之後,就能知曉在極端性能上如何做取捨。 ...
  • 蘋果在iOS16.1系統對第三方開放了靈動島的API,並允許開發者基於靈動島開發相應軟體,越來越多的APP開始基於靈動島的交互進行設計和開發,本文將簡單介紹靈動島開發的流程和將其與業務場景相結合的思考。 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...