L
2 апреля 2021 г. 5: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>

Вам это нравится? Поделитесь в социальных сетях!

1
Evgenii Legotckoi
  • 2 июля 2021 г. 16:25

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

    Комментарии

    Только авторизованные пользователи могут публиковать комментарии.
    Пожалуйста, авторизуйтесь или зарегистрируйтесь