Нужно переименовать Django Ajax в кнопку «Мне нравится», но не работает - PullRequest
0 голосов
/ 17 октября 2018

В настоящее время мои кнопки работают, но я поместил их в цикл django for.Я хотел бы переместить логику js в отдельный файл, но сначала мне нужно дать ему лучшее имя.Вот фрагмент моего кода:

{% for post in posts %}

.....

<script type="text/javascript">
  function toggleLike{{post.id}}(){
        $.ajax({
          url: "{% url 'photo_blog-post_like_api' post.id %}",
          success: function(data) {
            $("#likeCount{{post.id}}").html(data.like_count + ' likes');
            $('#imageElement{{post.id}}').html(data.img);
          }
          });
      };
</script>
<a id=imageElement{{post.id}}  onclick="toggleLike{{post.id}}()"><img src="/media/nav_buttons/liked.svg" height="17" width="17"></a>
....
<post info here>
....

{% endfor %}

Когда я удаляю {{post.id}} из имени функции и вызываю по клику, кнопка работает только для записи внизу страницы.,Все остальные кнопки переключают информацию для этого поста.Как я могу дать этой функции общее имя, но при этом иметь уникальное взаимодействие с каждым постом?

1 Ответ

0 голосов
/ 17 октября 2018

Вы не должны делать это как часть имени в любом случае.Идентификатор сообщения является параметром.Единственная часть, находящаяся в совместном расположении, определяет, как передать ее в URL-тег Django

function toggleLike(post_id){
    $.ajax({
      url: "{% url 'photo_blog-post_like_api' "00000" %}".replace("00000", post_id)
      success: function(data) {
        $("#likeCount" + post_id).html(data.like_count + ' likes');
        $('#imageElement' + post.id).html(data.img);
      }
      });
  };
</script>
<a id=imageElement{{post.id}}  onclick="toggleLike({{post.id}})"><img src="/media/nav_buttons/liked.svg" height="17" width="17">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...