Как мне создать ajax функций для всего сайта? - PullRequest
0 голосов
/ 03 августа 2020

Я создаю центр уведомлений, естественно он должен быть виден на всем сайте; Итак, вопрос в том, как мне это сделать. Создайте файл name.js внутри папки static, но кажется, что чего-то не хватает, так как кроме задержки в самом app он не виден за его пределами.

view.py

@csrf_exempt
def NewsSubjects(request):
    if request.is_ajax() == True:
        queryset = Downloads.objects.all().order_by('register_date').values()[:5]
        data=list(queryset)
        return JsonResponse(data, safe=False)

urls.py

path('alerts/', views.NewsSubjects, name='alerts'),

/ static / js / notifications. js

$.ajax({
    // initialize an AJAX request      
    url: "alerts",
    // al estar en static no se usa el name del URL ('control:alert') sino el PATH (alerts/)
    type: "GET",
    datatype:'json',
    success: function(data) {
        console.log('cambio')
        var opciones = document.getElementById("nuevasDisciplinas");
        var countAlert = document.getElementById("countAlert");
        var listaDisciplinas = ''
        for (var i = 0; i < data.length; i++) {
            // console.log(data[i]);
            var nombDis = data[i].category_name
            var fechaCreacion = data[i].register_date
            // var d = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(fechaCreacion)
            // var m = new Intl.DateTimeFormat('en', { month: 'short' }).format(fechaCreacion)
            // var a = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(fechaCreacion)
            var icon = '<divclass="mr-3"><divclass="icon-circle bg-primary"><iclass="fas fa-file-alt text-white"></i></div></div>'
            var body ='<div><divclass="small text-gray-500">'+fechaCreacion+'</div><spanclass="font-weight-bold">'+nombDis+'</span></div>'
            listaDisciplinas += icon+body
        }
        opciones.innerHTML = listaDisciplinas;
        countAlert.innerHTML = data.length;
    },
    error: function() {
        console.log("The information could not be obtained");
    }
});

master. html

<script src="{% static 'js/notifications.js' %}"></script>

идея проста, принесите последние записи в соответствии с датой регистрации (лучшим вариантом будет дата входа в систему, но хорошо), это работает в приложении уведомлений, но не в остальном. Он возвращает сообщение, которое я помещаю в случае ошибки.

PS: если вы можете помочь мне с форматированием даты, это тоже будет хорошо

1 Ответ

0 голосов
/ 06 августа 2020

вы должны использовать path из url вместо имени, то есть имя app/url/

Django urls.py они состоят of path(this_url, view, name_url), поэтому, чтобы использовать его на сайте Django, вы должны использовать app/this_url/

в моем случае

my urls.py

path('alerts/', views.NewsSubjects, name='alerts'),

в ajax URL, это будет

$.ajax({
    url: "app_name/alerts/",
    ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...