在Django中使用AJAX实现喜欢/不喜欢按钮(对于登录的用户),可以按照以下步骤进行:
Like
的模型,其中包含一个外键字段指向用户和一个外键字段指向被喜欢的对象。from django.db import models
from django.contrib.auth.models import User
class Like(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
liked_object = models.ForeignKey(YourModel, on_delete=models.CASCADE)
<button id="like-button">喜欢</button>
<script>
document.getElementById("like-button").addEventListener("click", function() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "/like/", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 处理成功响应
}
};
xhr.send(JSON.stringify({liked_object_id: your_object_id}));
});
</script>
Like
对象。from django.http import JsonResponse
from django.contrib.auth.decorators import login_required
@login_required
def like_view(request):
if request.method == "POST":
liked_object_id = request.POST.get("liked_object_id")
liked_object = YourModel.objects.get(id=liked_object_id)
like, created = Like.objects.get_or_create(user=request.user, liked_object=liked_object)
if not created:
like.delete()
return JsonResponse({"status": "success"})
from django.urls import path
from .views import like_view
urlpatterns = [
path('like/', like_view, name='like'),
]
这样,当用户点击喜欢/不喜欢按钮时,AJAX请求将被发送到/like/
路径,并由like_view
视图函数处理。视图函数将根据用户的喜好信息创建或删除相应的Like
对象,并返回一个成功的JSON响应。
请注意,上述代码仅为示例,您需要根据您的实际需求进行适当的修改和调整。
关于腾讯云相关产品和产品介绍链接地址,可以参考腾讯云官方文档或咨询腾讯云官方客服获取更详细的信息。
云原生正发声
云+社区技术沙龙[第8期]
云+社区技术沙龙[第7期]
云+社区技术沙龙[第25期]
云+社区技术沙龙[第17期]
高校开发者
北极星训练营
云+社区技术沙龙[第11期]
Techo Day
领取专属 10元无门槛券
手把手带您无忧上云