progress bar - pai-plznw4me/django-initializer GitHub Wiki
ํ๋ก๊ทธ๋์ค ๋ฐ๋ฅผ ํ๊ธฐํจ. width: 25% ๋ถ๋ถ๊ณผ text ๋ถ๋ถ์ ๋ณ๊ฒฝํด์ผ ํจ (๋ณ๊ฒฝ ์ฝ๋์ ์๋ pooling ํจ์ ๋ถ๋ถ์ ์ฐธ์กฐ)
<div class="progress">
<div id="progress-bar" class="progress-bar" role="progressbar" style="width: 25%;" aria-valuenow="25" aria-valuemin="0"
aria-valuemax="100">25%
</div>
</div>
{# jquery #}
<script src="https://code.jquery.com/jquery-3.6.0.min.js"
integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
{# bootstrap #}
<script >src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"></script>
<script src={% static '/interval.js' %}>
- ์ผ์ ์๊ฐ ๋์ ์ง์์ ์ผ๋ก ์ ํธ๋ฅผ ๋ณด๋ด๋ polling ํจ์
- ์๋ฒ์์ ๋ช percent ์ธ์ง ์ง์์ ์ผ๋ก ๋ฌผ์ด๋ด
// interval.js
setInterval(function () {
$.ajax({
url: "http://localhost:8000/check_progress",
data: {name: "์ด๋ฆ", value: "ํ๊ธธ๋"},
method: "POST",
dataType: "json",
})
.done(function (response) {
// ํ๋ก๊ทธ๋์ค ๋ฐ style width ๋ณ๊ฒฝ
let prog_bar = $('#progress-bar')
prog_bar.width(percent+'%')
// ํ๋ก๊ทธ๋์ค ๋ด ํ
์คํธ ๋ณ๊ฒฝ
let percent = response['percent']
prog_bar.text(percent+'%')
})
.fail(function () {
})
.always(function () {
});
}, 1000); //10000 milliseconds = 1 seconds
@csrf_exempt
def check_progress(request):
global FILE_COUNTER
FILE_COUNTER = FILE_COUNTER + 1
FILE_COUNTER = FILE_COUNTER % 100
data = {'percent': FILE_COUNTER}
return JsonResponse(data)