I am trying to develop a dashboard with django that shows notifications and updates its status automatically.
I was seeing that with Ajax and Jquery I can actulizar div without problem ...
But I'm having problems with the templates, so I use Django.
Here is my code
View of Django to show in loaddiv
@login_required
def profile(request):
#email = Email.objects.all()
squid_status = Squid.objects.filter(fecha__gte=timezone.now() - timezone.timedelta(days=1)).values_list('user', flat=True).distinct().count()
email_status = Email_org.objects.filter(fecha__gte=timezone.now() - timezone.timedelta(days=1)).values_list('msgid', flat=True).distinct().count()
incidencias_nav_status = Incidencia.objects.filter(fecha__gte=timezone.now() - timezone.timedelta(days=1)).values_list('id', flat=True).distinct().count()
incidencias_mial_status = Incidencia_email.objects.filter(fecha__gte=timezone.now() - timezone.timedelta(days=1)).values_list('id', flat=True).distinct().count()
incidencias_status = incidencias_nav_status + incidencias_mial_status
return render(request, 'panel/loaddiv.html',{'email_status':email_status, 'squid_status':squid_status, 'incidencias_status':incidencias_status})
View of Django to show in dashboard template
@login_required
def profile2(request):
#email = Email.objects.all()
squid_status = Squid.objects.filter(fecha__gte=timezone.now() - timezone.timedelta(days=1)).values_list('user', flat=True).distinct().count()
email_status = Email_org.objects.filter(fecha__gte=timezone.now() - timezone.timedelta(days=1)).values_list('msgid', flat=True).distinct().count()
#incidencias_nav_status = Incidencia.objects.filter(fecha__gte=timezone.now() - timezone.timedelta(days=1)).values_list('id', flat=True).distinct().count()
#incidencias_mial_status = Incidencia_email.objects.filter(fecha__gte=timezone.now() - timezone.timedelta(days=1)).values_list('id', flat=True).distinct().count()
return render(request, 'panel/profile2.html')
Javascript in the template that shows all the information
<script>
$(document).ready(function() {
var refreshId = setInterval( function(){
$('#alerta_incidencias').load('/loaddiv');//actualizas el div
}, 1000 );
});
</script>
HTML on the page where the data is updated
<div id="alerta_incidencias">
<div class="widget red-bg p-lg text-center">
<div class="m-b-md">
<i class="fa fa-bell fa-4x"></i>
<h1 class="m-xs">{{incidencias_status}} </h1>
<h3 class="font-bold no-margins">
Incidencia{{incidencias_status|pluralize}}
registrada{{incidencias_status|pluralize}}
</h3>
<h4 class="font-bold no-margins"><a href="{%url 'incidencias' %}">
Detalles...</a></h4>
</div>
</div>
I can not get the template loading the data from "loaddiv" To my knowledge I am passing the parameters of the url in the javascript wrong
Greetings