как использовать ajax в postlistview, а также в postdetailview - PullRequest
0 голосов
/ 22 марта 2020

У меня есть подробности поста, где я успешно использую ajax, чтобы полюбить раздел поста, поэтому, если кому-то нравится пост, он асинхронно ссылается на sh раздел. Однако я не могу сделать это в представлении списка сообщений. это не работает асинхронно. Любой, кто может помочь мне решить эту проблему.

, вот мои мнения.

<script>
$(document).on('click', '#like', function(event){
  event.preventDefault();
  var pk = $(this).attr('value');
  $.ajax({
    type: 'POST',
    url: '{% url "like_post" %}',
    data: {'id':pk, 'csrfmiddlewaretoken': '{{ csrf_token }}'},
    dataType: 'json',
    success: function(response){
      $('#like-home').html(response['form'])
      console.log($('#like-home').html(response['form']));
    },
    error: function(rs, e){
    console.log(rs.responseText);
    },
 });
});
</script>

<form action="{% url 'like_post' %}" method="POST">
{% csrf_token %}
{% if post.is_liked %}
<button type="submit" id="like" name="post_id" value="{{ post.id }}" class="btn btn-danger">dislike</button>
{% else %}
<button type="submit" id="like" name="post_id" value="{{ post.id }}" class="btn btn-primary">like</button>
{% endif %}
</form>

и мой список рассылки. html это:

<p><a class="article-content" href="{% url 'post-detail' pk=post.pk %}" >{{ post.content }}</a></p>
      <a href="{% url 'post-likes' pk=post.pk %}">
        {{ post.total_likes }}like{{ post.total_likes|pluralize}}
      </a>
      <a href="{% url 'post-detail' pk=post.pk %}">{{ post.comments.count }}comment{{ post.comments.count|pluralize }}</a>
      <div id="share-section">
          {% include 'blog/share.html' %}
      </div>
        <div id="like-home">
        {% include 'blog/likes_home.html' %}
    </div>

1 Ответ

0 голосов
/ 22 марта 2020

Полагаю, это из-за этого:

if request.is_ajax():
    html = render_to_string('blog/like_section.html', context, request=request)
    return JsonResponse({'form': html})

if request.is_ajax():
    html = render_to_string('blog/likes_home.html', context, request=request)
    return JsonResponse({'form': html})

Второй оператор if никогда не будет выполнен, потому что у вас такое же условие, и в первом if есть return, поэтому функция завершает свою работу там освежая blog/like_section.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...