MAO-EYE 2017-10-20 11:41 采纳率: 100%
浏览 40

像Django Ajax中的Button

my like button is working fine without ajax with page reloading but it is having problem when done by implementing ajax. the like and unlike is happening in the backend (like is created and deleted in database on ajax Post request), but the like count,like,unlike button does not change in response on ajax post request, until the page is reloaded. Need Help

here is the post model and like model for posting image and liking it in models.py

class PostModel(models.Model):
 user = models.ForeignKey(UserModel)
 image = models.FileField(upload_to='user_images')
 image_url = models.CharField(max_length=255)
 caption = models.CharField(max_length=240)
 created_on = models.DateTimeField(auto_now_add=True)
 updated_on = models.DateTimeField(auto_now=True)
 has_liked = False

 @property
 def like_count(self):
 return len(LikeModel.objects.filter(post=self))

 class LikeModel(models.Model):
  user = models.ForeignKey(UserModel)
  post = models.ForeignKey(PostModel)
  created_on = models.DateTimeField(auto_now_add=True)
  updated_on = models.DateTimeField(auto_now=True)

url for liking in urls.py

    url(r'^like/', like_view),

views.py

 def like_view(request):
    user = check_validation(request)
    if user and request.method == 'POST':
       form = LikeForm(request.POST)
       if form.is_valid():
           #post_id = form.cleaned_data.get('post').id
           post_id=request.POST['post']

           existing_like = LikeModel.objects.filter(post_id=post_id, user=user).first()

           if not existing_like:
                LikeModel.objects.create(post_id=post_id, user=user)
           else:
                existing_like.delete()

        return redirect('/feed/')

    else:
        return redirect('/login/')

template.html

    {% for post in posts %}
    <form id="like_form">
      {% csrf_token %}
      <input type="hidden" name="post" id="post_id"value="{{ post.id }}">
      {% if post.has_liked %}
      <button class="btn btn-link unlike"type="submit"><i class="fa fa-heart" aria-hidden="true"style="color:#ed4956;"></i></button>
      {% else %}
      <button class="btn btn-link like"type="submit"><i class="fa fa-heart-o" aria-hidden="true"style=color:#333333;"></i></button>
      {% endif %}

     </form>
    {% endfor %}

Javascript code

      <script>

      $(document).on('submit','#like_form',function (e) {
      e.preventDefault();
      $.ajax({
      type:'POST',
      url:'/like/',
      data:{
      post:$('#post_id').val(),
      csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()

      },
      success:function (response) {
        console.log("liked");
    }

    });

    });
  </script>
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 matlab(相关搜索:紧聚焦)
    • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
    • ¥15 路易威登官网 里边的参数逆向
    • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
    • ¥50 需求一个up主付费课程
    • ¥20 模型在y分布之外的数据上预测能力不好如何解决
    • ¥15 processing提取音乐节奏
    • ¥15 gg加速器加速游戏时,提示不是x86架构
    • ¥15 python按要求编写程序
    • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入