我正在尝试构建类似按钮的按钮,但是我无法对django视图进行ajax调用。我的httpresponse代码(不像ajax那样):-
/models.py
class post(models.Model):
Profile=models.ForeignKey(Profile,on_delete=models.CASCADE)
Picture=models.ImageField(upload_to='PostMedia',blank=True,null=True)
DatePosted=models.DateTimeField(default=timezone.now)
Content=models.TextField(blank=True,null=True)
user_like=models.ManyToManyField(User,related_name="likes",blank=True)
def __str__(self):
return self.Profile.user.username
@property
def totallikes(self):
return self.user_like.count()
class Meta:
ordering=['-DatePosted']
@property
def like_count(self):
return len(likes.objects.filter(post=self))
/urls.py
path('like/<int:postid>',views.like_button,name='like_button'),
/views.py
def like_button(request,postid):
postresult=get_object_or_404(post,id=postid)
if postresult.user_like.filter(id=request.user.id).exists():
postresult.user_like.remove(request.user)
else:
postresult.user_like.add(request.user)
return redirect('feed')
我的模板是:-
{% for p in result %}
<div class="SpriteContainer">
<a href="/like/{{ p.id }}"><img src="{%static "/images/icons/heart.png" %}"/></a>
<p style="display: inline-block;">{{ p.totallikes }}</p>
</div>
{% endfor %}
现在我想做两件事:-
1)进行ajax调用,这样我就不需要重新加载页面。
2)要检查当前登录的用户是否喜欢该帖子,以便我可以将图标更改为like。我可以直接在模板中执行此操作,还是必须声明自定义django模板标签?