【发布时间】:2019-01-17 05:26:57
【问题描述】:
首先:我已经检查了所有相关的答案和问题......他们没有帮助我
所以我正在尝试创建基于 ajax 的按钮,其中包含多个用户和多个对象或帖子我尝试了很多但它们都不起作用但我有基础
models.py:
class BlogPost(models.Model):
#some fields
class Like (models.Model):
user = models.ForeignKey(User)
post = models.ForeignKey(BlogPost)
views.py
from .models import Like
def PostLikeToggle(request):
#here i want to capture the request check if the user liked the post or
# no by sending user.username and post.title to the endpoint like.html
#and then update his status
return render(request, 'like.html')
urls.py
from plateform import views as plateform
urlpatterns = [
#other urls
url(r'^like/', plateform.PostLikeToggle, name='PostLikeToggle'),]
like.html
{% if liked == 'false' %}
false
{% elif liked == 'true' %}
true
{% endif %}
blogpost.html
#ajax
$('.thumb').click(function () {
$.ajax({
type: 'POST',
url: '/like/',
data: {
'csrfmiddlewaretoken': $('input[name=csrfmiddlewaretoken]').val(),
},
success: LikePost,
dataType: 'html'
});
function LikePost(data, jqXHR) {
console.log(data)
}
});
更新 我试图弄清楚所以我添加了一些东西
型号:
class BlogPost(models.Model):
#some fields
liked = models.ManyToManyField(User, related_name='PostLikeToggle')
#REMOVED class Like (models.Model)
观看次数:
def PostLikeToggle(request):
user = request.user
if request.method == 'POST':
post_id = request.POST['post_id']
post = get_object_or_404(posts, id=post_id)
_liked = user in post.liked.all()
if _liked :
post.liked.remove(user)
else:
post.liked.add(user)
return JsonResponse({'liked':_liked})
那么我是不是走对路了??
【问题讨论】:
-
您需要在请求中添加额外的数据:您想要喜欢的对象。
-
您应该发布不起作用的代码,以便我们帮助您调试它,现在看起来您只是希望其他人为您完成完整的实现。
-
您需要想出一种方法,在帖子不喜欢后软删除 LIKE 或删除 LIKE 本身的行。此外,作为提示,您需要两件事来唯一识别 LIKE - UserId 和 PostId
-
我是否需要在博客文章中创建一个外部字段并删除类似的模型,所以如果用户单击按钮我添加他
-
请查看我的更新
标签: python ajax django django-views endpoint