L
02 квітня 2021 р. 05:41

Как сделать счетчик закладок для каждого пользователя

bookmark, django

Сделал систему закладок как в статье , всё работает прекрасно, но у меня на сайте в панели меню есть кнопка избранного, где отображается сколько статей добавил в избранное пользователь, как сделать так, что бы он обновлялся так же как общий счетчик в статье

до нажатия на кнопку добавить в избранное

после

после перезагрузки страницы

код меню (храниться в base шаблоне и подключается {% extends "main/base.html" %})

  1. <nav>
  2. <a href="/" style="color: inherit; text-decoration: none;">
  3. <picture>
  4. <source type="image/svg+xml" + srcset="{% static 'icons/article-white-18dp.svg' %}">
  5. <img src="{% static 'icons/article-white-18dp.svg' %}" width="16" height="16">
  6. </picture>
  7. <span class="body-2" style="color: inherit;">Статьи</span>
  8. <span class="counter">{{ article_count.count }}</span>
  9.  
  10. </a>
  11.  
  12. <a href="{% url 'post_favourite_list' %}" style="color: inherit; text-decoration: none;">
  13. <picture>
  14. <source type="image/svg+xml" + srcset="{% static 'icons/favorite-white-18dp.svg' %}">
  15. <img src="{% static 'icons/favorite-white-18dp.svg' %}" width="16" height="16">
  16. </picture>
  17. <span class="body-2">Избранное</span>
  18. <span class="counter" data-count="bookmark">{{ request.user.bookmarkarticle_set.all.count }}</span>
  19. </a>
  20. </nav>

жс код аякса

  1. function to_bookmarks()
  2. {
  3. var current = $(this);
  4. var type = current.data('type');
  5. var pk = current.data('id');
  6. var action = current.data('action');
  7.  
  8. $.ajax({
  9. url : "/api/" + type + "/" + pk + "/" + action + "/",
  10. type : 'POST',
  11. data : { 'obj' : pk },
  12.  
  13. success : function (json) {
  14. current.find("[data-count='" + action + "']").text(json.count);
  15. }
  16. });
  17.  
  18. return false;
  19. }
  20.  
  21. // Подключение обработчика
  22. $(function() {
  23. $('[data-action="bookmark"]').click(to_bookmarks);
  24. });

код кнопки "добавить в избранное" в статье

  1. <a data-id="{{ post.id }}" data-type="article" data-action="bookmark" title="Избранное">
  2. <button type="button" class="btn btn-danger" style="margin-top: 20px ">
  3. {% if post.bookmarkarticle_set.all|user_in:user %}
  4. <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
  5. class="bi bi-heart-fill" viewBox="0 0 16 16">
  6. <path fill-rule="evenodd"
  7. d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z"></path>
  8. </svg>
  9. {% else %}
  10. <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
  11. class="bi bi-heart-fill" viewBox="0 0 16 16">
  12. <path fill-rule="evenodd"
  13. d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z"></path>
  14. </svg>
  15. {% endif %}
  16. <span data-count="bookmark">{{ post.get_bookmark_count }}</span>
  17. </button>
  18. </a>
2
Питання задається статтеюDjango - Підручник 022. Додавання системи закладок (вибране) на сайт

Вам це подобається? Поділіться в соціальних мережах!

1
Evgenii Legotckoi
  • 02 липня 2021 р. 16:25

Скорее всего current не находит, смотрите, что в консоле браузера вываливает. Наверняка там есть ошибки.

    Коментарі

    Only authorized users can post comments.
    Please, Log in or Sign up
    • Останні коментарі
    • Evgenii Legotckoi
      16 квітня 2025 р. 17:08
      Благодарю за отзыв. И вам желаю всяческих успехов!
    • IscanderChe
      12 квітня 2025 р. 17:12
      Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
    • AK
      01 квітня 2025 р. 11:41
      Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
    • Evgenii Legotckoi
      09 березня 2025 р. 21:02
      К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
    • VP
      09 березня 2025 р. 16:14
      Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…