Загрузка новых страниц через Ajax без обновления всей панели навигации Django

Я новичок в Django и создаю свой собственный сайт. Я написал страницу base.html, которая содержит основное тело, CSS, js, шрифты и навигационную панель, которую будут иметь все страницы моего сайта. Навигационная панель находится в другом HTML-файле, navbar.html

Теперь, поскольку CSS/js/fonts/navbar, включенные в base.html, будут загружаться на каждой странице и не будут меняться, есть ли способ с помощью Ajax загрузить только фактическое содержимое страницы, которое изменяется плавно, без обновления всей страницы?

Например, часть страницы, которая визуально меняется каждый раз, находится внутри тега <section class="home"></section>

При использовании JQuery все довольно просто:

<script>
   function load_page(url) {
      $.ajax({
         url: url,
         success: function (data) {
            $('#nav_id').html('');
            data.nav_items.forEach(item => {
               $('#nav_id').append($('<div>').onclick(load_page(item.url)).text(item.title));
            }
         },
         error: function () {
            alert('Could not load data');
         }
      });
   }
</script>

А в вашем url вы можете определить это как /nav/str:slug/, что приведет к такому виду:

def nav_ajax(request, slug):
   if slug == 'a':
       return JsonResponse({
          'navitem1': {
              'title': 'A',
              'url': reverse('your_nav_url_name', kwargs={'slug':'a'}),
       },
       # other menu items
       )
   else:
      return JsonResponse({}) # default menu items
Вернуться на верх