It is best to do this using JavaScript instead of trying to do something in Django. You will have Django populating your JavaScript, and then JavaScript will execute your progress bar. I am using jQuery UI for progressbar .
Django Template:
var portfolio = {
image_count = {{ images|length }},
images = [
{% for image in images %}{
'src': "{{ image.url }}",
'title': "{{ image.title }}"
}{% if not forloop.last %},{% endif %}{% endfor %}
]
};
JavaScript:
<script>
var count = 0;
var updateProgress = function() {
count++;
progress = parseInt((count / portfolio.image_count) * 100);
$("#progressbar").progressbar("value", progress);
if (progress >= 100) {
$("#progressbar").hide();
$('#multimedia-portfolio').multimedia_portfolio({width: 800});
$("#portfolio-cont").show();
}
}
$(function() {
$("#progressbar").progressbar({value:0});
$('#portfolio-cont').hide();
if (portfolio) {
for (var i=0; i<portfolio.image_count; i++) {
var image = portfolio.images[i];
var img = $('<img>').attr('src', image.src)
.attr('title', image.title)
.load(updateProgress);
var a = $("<a>").attr("href", image.src)
.addClass("thickbox");
$(a).append(img);
var li = $("<li>").append(a);
$('#multimedia-portfolio').append(li);
}
}
});
</script>
This also assumes that you have this (-ish) HTML:
<div id="progressbar"></div>
<div id="portfolio-cont"><ul id="multimedia-portfolio"></ul></div>
I hope this helps you in at least a certain direction.
source
share